<div class="hud-container">
<div class="hud-wrapper">
<svg class="hud-svg" viewBox="0 0 200 200">
<circle class="hud-track" cx="100" cy="100" r="90"></circle>
<circle class="hud-progress outer-ring" id="ring-1" cx="100" cy="100" r="90"></circle>
<circle class="hud-track" cx="100" cy="100" r="70"></circle>
<circle class="hud-progress middle-ring" id="ring-2" cx="100" cy="100" r="70"></circle>
<circle class="hud-track" cx="100" cy="100" r="50"></circle>
<circle class="hud-progress inner-ring" id="ring-3" cx="100" cy="100" r="50"></circle>
</svg>
<div class="hud-data">
<span class="hud-value" id="hud-val">87%</span>
<span class="hud-label">SYSTEM</span>
</div>
</div>
</div>*, *::before, *::after {
box-sizing: border-box;
}
body {
font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
background: #020617;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
}
.hud-container {
width: 300px;
height: 300px;
display: flex;
justify-content: center;
align-items: center;
background: radial-gradient(circle, rgba(15, 23, 42, 1) 0%, rgba(2, 6, 23, 1) 100%);
border-radius: 50%;
box-shadow: 0 0 50px rgba(59, 130, 246, 0.2), inset 0 0 30px rgba(59, 130, 246, 0.1);
}
.hud-wrapper {
position: relative;
width: 200px;
height: 200px;
}
.hud-svg {
width: 100%;
height: 100%;
transform: rotate(-90deg);
}
.hud-track {
fill: none;
stroke: rgba(51, 65, 85, 0.5);
stroke-width: 4;
}
.hud-progress {
fill: none;
stroke-linecap: round;
transition: stroke-dashoffset 1s cubic-bezier(0.4, 0, 0.2, 1);
}
.outer-ring {
stroke: #3b82f6;
stroke-width: 6;
stroke-dasharray: 565.48;
stroke-dashoffset: 565.48;
filter: drop-shadow(0 0 8px #3b82f6);
}
.middle-ring {
stroke: #10b981;
stroke-width: 5;
stroke-dasharray: 439.82;
stroke-dashoffset: 439.82;
filter: drop-shadow(0 0 6px #10b981);
}
.inner-ring {
stroke: #ec4899;
stroke-width: 4;
stroke-dasharray: 314.15;
stroke-dashoffset: 314.15;
filter: drop-shadow(0 0 4px #ec4899);
}
.hud-data {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.hud-value {
color: #ffffff;
font-size: 2.5rem;
font-weight: 800;
text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
letter-spacing: 1px;
}
.hud-label {
color: #3b82f6;
font-size: 0.875rem;
font-weight: 600;
letter-spacing: 4px;
margin-top: 4px;
}const ring1 = document.getElementById("ring-1");
const ring2 = document.getElementById("ring-2");
const ring3 = document.getElementById("ring-3");
const hudVal = document.getElementById("hud-val");
// Circumferences of the rings
const c1 = 565.48;
const c2 = 439.82;
const c3 = 314.15;
function updateHUD() {
const v1 = Math.floor(Math.random() * 40) + 60; // 60-100
const v2 = Math.floor(Math.random() * 50) + 30; // 30-80
const v3 = Math.floor(Math.random() * 60) + 20; // 20-80
ring1.style.strokeDashoffset = c1 - (v1 / 100) * c1;
ring2.style.strokeDashoffset = c2 - (v2 / 100) * c2;
ring3.style.strokeDashoffset = c3 - (v3 / 100) * c3;
hudVal.innerText = v1 + "%";
}
setTimeout(updateHUD, 100);
setInterval(updateHUD, 3000);Nothing to show yetType HTML, CSS or JavaScript and your page appears here.
Click any element to find its code Esc
Check this code before you run it
It came from a shared link. It runs with fewer permissions, so it cannot open pop-ups, submit forms or start downloads.
0.00s / 0.00s
Nothing has animated yet. Hover, click or type in the preview and each CSS animation, transition or
element.animate() call shows up here as it plays.