Isometric hairline over-ear headphones with a row of equalizer bars rising between the cups, each on its own sprung delay. The bars scale inside their upright plane, so they stay on the grid.
Also known as: hairline animation, isometric headphones animation, equalizer bars css, sound bars animation.
<div class="hln-headphones-eq" role="img" aria-label="Headphones with sound bars rising">
<svg viewBox="-110 -60 220 120" aria-hidden="true">
<g transform="translate(-29.3 4.9) scale(1.15)">
<polygon points="47.5,-0.25 47.45,-1.84 47.31,-3.48 47.08,-5.14 46.75,-6.84 46.33,-8.55 45.83,-10.27 45.23,-12 44.55,-13.72 43.79,-15.44 42.95,-17.13 42.04,-18.8 41.06,-20.44 40.01,-22.04 38.89,-23.59 37.72,-25.09 36.5,-26.53 35.23,-27.91 33.92,-29.21 32.57,-30.44 31.19,-31.59 29.79,-32.64 28.37,-33.61 26.94,-34.48 25.5,-35.25 24.06,-35.92 22.63,-36.48 21.21,-36.93 19.81,-37.28 18.43,-37.51 17.08,-37.63 15.77,-37.64 14.5,-37.53 13.28,-37.32 12.11,-36.99 10.99,-36.55 9.94,-36 8.96,-35.34 8.05,-34.59 7.21,-33.73 6.45,-32.78 5.77,-31.73 5.17,-30.6 4.67,-29.38 4.25,-28.09 3.92,-26.72 3.69,-25.29 3.55,-23.8 3.5,-22.25 6.5,-20.75 6.54,-22.1 6.66,-23.41 6.87,-24.66 7.15,-25.86 7.51,-27 7.95,-28.06 8.46,-29.06 9.05,-29.98 9.7,-30.82 10.43,-31.57 11.22,-32.24 12.06,-32.82 12.97,-33.3 13.93,-33.69 14.94,-33.99 16,-34.19 17.1,-34.29 18.23,-34.29 19.39,-34.19 20.58,-33.99 21.79,-33.7 23.02,-33.31 24.26,-32.83 25.5,-32.25 26.74,-31.58 27.98,-30.83 29.21,-29.99 30.42,-29.08 31.61,-28.08 32.77,-27.02 33.9,-25.88 35,-24.69 36.06,-23.43 37.07,-22.13 38.03,-20.77 38.94,-19.38 39.78,-17.95 40.57,-16.5 41.3,-15.02 41.95,-13.52 42.54,-12.02 43.05,-10.51 43.49,-9 43.85,-7.51 44.13,-6.03 44.34,-4.57 44.46,-3.14 44.5,-1.75"/>
<g><polygon points="-11,-7.5 -10.96,-8.48 -10.83,-9.49 -10.63,-10.53 -10.34,-11.59 -9.97,-12.66 -9.53,-13.74 -9.01,-14.8 -8.43,-15.86 -7.78,-16.89 -7.07,-17.89 -6.31,-18.86 -5.5,-19.78 -4.65,-20.64 -3.76,-21.46 -2.85,-22.2 -1.91,-22.88 -0.96,-23.48 0,-24 0.96,-24.44 1.91,-24.79 2.85,-25.05 3.76,-25.22 4.65,-25.29 5.5,-25.28 6.31,-25.17 7.07,-24.96 7.78,-24.67 14.78,-21.17 15.43,-20.78 16.01,-20.31 16.53,-19.76 16.97,-19.13 17.34,-18.43 17.63,-17.66 17.83,-16.83 17.96,-15.94 18,-15 17.96,-14.02 17.83,-13.01 17.63,-11.97 17.34,-10.91 16.97,-9.84 16.53,-8.76 16.01,-7.7 15.43,-6.64 14.78,-5.61 14.07,-4.61 13.31,-3.64 12.5,-2.72 11.65,-1.86 10.76,-1.04 9.85,-0.3 8.91,0.38 7.96,0.98 7,1.5 6.04,1.94 5.09,2.29 4.15,2.55 3.24,2.72 2.35,2.79 1.5,2.78 0.69,2.67 -0.07,2.46 -0.78,2.17 -7.78,-1.33 -8.43,-1.72 -9.01,-2.19 -9.53,-2.74 -9.97,-3.37 -10.34,-4.07 -10.63,-4.84 -10.83,-5.67 -10.96,-6.56"/></g>
<g transform="matrix(1 -.5 0 -1 7 -9.5)"><circle cx="0" cy="0" r="11"/></g>
<g><polygon points="-2.5,-4.75 -2.46,-5.6 -2.36,-6.47 -2.18,-7.37 -1.93,-8.29 -1.61,-9.21 -1.23,-10.14 -0.78,-11.06 -0.28,-11.97 0.28,-12.86 0.89,-13.72 1.55,-14.56 2.25,-15.35 2.99,-16.1 3.75,-16.8 4.54,-17.45 5.35,-18.03 6.17,-18.55 7,-19 7.83,-19.38 8.65,-19.68 9.46,-19.91 10.25,-20.05 11.01,-20.12 11.75,-20.1 12.45,-20.01 13.11,-19.83 13.72,-19.58 16.72,-18.08 17.28,-17.75 17.78,-17.34 18.23,-16.86 18.61,-16.32 18.93,-15.71 19.18,-15.05 19.36,-14.33 19.46,-13.56 19.5,-12.75 19.46,-11.9 19.36,-11.03 19.18,-10.13 18.93,-9.21 18.61,-8.29 18.23,-7.36 17.78,-6.44 17.28,-5.53 16.72,-4.64 16.11,-3.78 15.45,-2.94 14.75,-2.15 14.01,-1.4 13.25,-0.7 12.46,-0.05 11.65,0.53 10.83,1.05 10,1.5 9.17,1.88 8.35,2.18 7.54,2.41 6.75,2.55 5.99,2.62 5.25,2.6 4.55,2.51 3.89,2.33 3.28,2.08 0.28,0.58 -0.28,0.25 -0.78,-0.16 -1.23,-0.64 -1.61,-1.18 -1.93,-1.79 -2.18,-2.45 -2.36,-3.17 -2.46,-3.94"/></g>
<g transform="matrix(1 -.5 0 -1 10 -8)"><circle cx="0" cy="0" r="9.5"/><circle class="hln-headphones-eq-l" cx="0" cy="0" r="5.5"/></g>
<g transform="matrix(1 .5 0 -1 14.5 3.25)"><g class="hln-headphones-eq-bar" style="--i: 0; --h: 5"><rect x="0" y="0" width="1.8" height="1"/></g></g><g transform="matrix(1 .5 0 -1 17.7 4.85)"><g class="hln-headphones-eq-bar" style="--i: 1; --h: 9"><rect x="0" y="0" width="1.8" height="1"/></g></g><g transform="matrix(1 .5 0 -1 20.9 6.45)"><g class="hln-headphones-eq-bar" style="--i: 2; --h: 13"><rect x="0" y="0" width="1.8" height="1"/></g></g><g transform="matrix(1 .5 0 -1 24.1 8.05)"><g class="hln-headphones-eq-bar" style="--i: 3; --h: 17"><rect class="hln-headphones-eq-a" x="0" y="0" width="1.8" height="1"/></g></g><g transform="matrix(1 .5 0 -1 27.3 9.65)"><g class="hln-headphones-eq-bar" style="--i: 4; --h: 12"><rect x="0" y="0" width="1.8" height="1"/></g></g><g transform="matrix(1 .5 0 -1 30.5 11.25)"><g class="hln-headphones-eq-bar" style="--i: 5; --h: 8"><rect x="0" y="0" width="1.8" height="1"/></g></g><g transform="matrix(1 .5 0 -1 33.7 12.85)"><g class="hln-headphones-eq-bar" style="--i: 6; --h: 4"><rect x="0" y="0" width="1.8" height="1"/></g></g>
<g><polygon points="33,14.5 33.04,13.52 33.17,12.51 33.37,11.47 33.66,10.41 34.03,9.34 34.47,8.26 34.99,7.2 35.57,6.14 36.22,5.11 36.93,4.11 37.69,3.14 38.5,2.22 39.35,1.36 40.24,0.54 41.15,-0.2 42.09,-0.88 43.04,-1.48 44,-2 44.96,-2.44 45.91,-2.79 46.85,-3.05 47.76,-3.22 48.65,-3.29 49.5,-3.28 50.31,-3.17 51.07,-2.96 51.78,-2.67 58.78,0.83 59.43,1.22 60.01,1.69 60.53,2.24 60.97,2.87 61.34,3.57 61.63,4.34 61.83,5.17 61.96,6.06 62,7 61.96,7.98 61.83,8.99 61.63,10.03 61.34,11.09 60.97,12.16 60.53,13.24 60.01,14.3 59.43,15.36 58.78,16.39 58.07,17.39 57.31,18.36 56.5,19.28 55.65,20.14 54.76,20.96 53.85,21.7 52.91,22.38 51.96,22.98 51,23.5 50.04,23.94 49.09,24.29 48.15,24.55 47.24,24.72 46.35,24.79 45.5,24.78 44.69,24.67 43.93,24.46 43.22,24.17 36.22,20.67 35.57,20.28 34.99,19.81 34.47,19.26 34.03,18.63 33.66,17.93 33.37,17.16 33.17,16.33 33.04,15.44"/></g>
<g transform="matrix(1 -.5 0 -1 51 12.5)"><circle cx="0" cy="0" r="11"/><circle class="hln-headphones-eq-l" cx="0" cy="0" r="7.5"/><circle class="hln-headphones-eq-l" cx="0" cy="0" r="1.2"/></g>
</g>
</svg>
</div>.hln-headphones-eq {
--c: var(--hln-color, #ff4f2e);
font-size: var(--hln-size, 16px);
position: relative;
display: grid;
place-items: center;
width: 22em;
height: 12em;
border-radius: 0.75em;
background: #f6f5f1;
overflow: hidden;
}
.hln-headphones-eq svg {
width: 100%;
height: 100%;
overflow: visible;
fill: #ffffff;
stroke: #1c1d21;
stroke-width: 1.25;
stroke-linejoin: round;
stroke-linecap: round;
}
.hln-headphones-eq svg * {
vector-effect: non-scaling-stroke;
}
.hln-headphones-eq .hln-headphones-eq-l {
stroke: #9a9ca3;
}
.hln-headphones-eq .hln-headphones-eq-a {
stroke: var(--c);
}
.hln-headphones-eq .hln-headphones-eq-bar {
transform: scale(1, var(--h));
animation: hln-headphones-eq-eq 5s calc(var(--i) * 0.07s) infinite both;
}
@keyframes hln-headphones-eq-eq {
0% { transform: scale(1, 1); }
12% { transform: scale(1, 1); animation-timing-function: linear(0, 0.035, 0.125, 0.247, 0.384, 0.524, 0.655, 0.771, 0.87, 0.948, 1.008, 1.05, 1.077, 1.091, 1.095, 1.091, 1.083, 1.071, 1.058, 1.045, 1.032, 1.021, 1.012, 1.005, 0.999, 0.995, 0.993, 0.991, 0.991, 0.991, 0.992, 0.993, 1); }
32% { transform: scale(1, var(--h)); }
76% { transform: scale(1, var(--h)); animation-timing-function: cubic-bezier(.65,0,.35,1); }
90% { transform: scale(1, 1); }
100% { transform: scale(1, 1); }
}
@media (prefers-reduced-motion: reduce) {
.hln-headphones-eq * {
animation: none !important;
}
}
@media (prefers-reduced-motion: reduce) {
.hln-headphones-eq, .hln-headphones-eq *, .hln-headphones-eq::before, .hln-headphones-eq::after, .hln-headphones-eq *::before, .hln-headphones-eq *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}--hln-color on the element or a parent.
Currently previewing #3b82f6.--hln-size. Every other dimension is in
em, so the whole thing scales together. Currently previewing 16px.transition or animation
shorthand. Staggered delays are relative, so they keep their rhythm.