Google Music Equalizer ('-' * 22) A pure CSS version of Google Music's equalizer gif.
Forked from Glen Cheney's Pen Google Music Equalizer.
A Pen by Jakob Hohlfeld on CodePen.
Google Music Equalizer ('-' * 22) A pure CSS version of Google Music's equalizer gif.
Forked from Glen Cheney's Pen Google Music Equalizer.
A Pen by Jakob Hohlfeld on CodePen.
| <div class="center-me"> | |
| <div class="equalizer"></div> | |
| </div> |
| // Google Music Equalizer | |
| // https://ssl.gstatic.com/music/fe/1c1abd24f4bdc2a3cc124f6e9928d13b/ani_equalizer_black.gif | |
| // A pen by @Vestride | |
| // Stop animation events from propagating to the body, | |
| // which stops codepen from pausing them... o_0 | |
| (function() { | |
| var animation = document.querySelector('.equalizer'); | |
| function onAnimation( evt ) { | |
| evt.stopPropagation(); | |
| } | |
| animation.addEventListener('webkitAnimationStart', onAnimation, false); | |
| animation.addEventListener('webkitAnimationIteration', onAnimation, false); | |
| animation.addEventListener('animationStart', onAnimation, false); | |
| animation.addEventListener('animationIteration', onAnimation, false); | |
| }()); |
| @size: 50vmin; | |
| // When @size is 40px, @max is 14px, @width is 4px, @margin is 1px | |
| @max: @size / 2.857142857; | |
| @width: @max / 3.5; | |
| @margin: @max / 14; | |
| @color: black; | |
| @equalizers: 3; | |
| @equalizerSize: (@equalizers * @width) + ( (@equalizers - 1) * @margin ); | |
| @bottom: ( @size - @max ) / 2; | |
| @left: ( @size - @equalizerSize ) / 2; | |
| // Heights | |
| @two: @max / 7; | |
| @three: @max / 4.666666667; | |
| @four: @max / 3.5; | |
| @five: @max / 2.8; | |
| @six: @max / 2.333333333; | |
| @seven: @max / 2; | |
| @eight: @max / 1.75; | |
| @nine: @max / 1.555555556; | |
| @ten: @max / 1.4; | |
| @eleven: @max / 1.272727273; | |
| @twelve: @max / 1.166666667; | |
| @thirteen: @max / 1.076923077; | |
| @fourteen: @max; | |
| .equalizer { | |
| position: absolute; | |
| bottom: @bottom; | |
| left: @left; | |
| display: block; | |
| width: @width; | |
| background-color: @color; | |
| height: @two; | |
| } | |
| .equalizer, | |
| .equalizer::before, | |
| .equalizer::after { | |
| animation: equalize 1.25s steps(25, end) 0s infinite; | |
| } | |
| .equalizer::before, | |
| .equalizer::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: @width + @margin; | |
| height: @max; | |
| width: @width; | |
| background-color: @color; | |
| } | |
| // Equalizer 2 | |
| .equalizer::before { | |
| animation-name: equalize2; | |
| } | |
| // Equalizer 3 | |
| .equalizer::after { | |
| left: @width * 2 + @margin * 2; | |
| animation-name: equalize3; | |
| } | |
| @keyframes equalize { | |
| 0% { | |
| height: @four; | |
| } | |
| 4% { | |
| height: @two; | |
| } | |
| 8% { | |
| height: @four; | |
| } | |
| 12% { | |
| height: @seven; | |
| } | |
| 16% { | |
| height: @ten; | |
| } | |
| 20% { | |
| height: @thirteen; | |
| } | |
| 24% { | |
| height: @twelve; | |
| } | |
| 28% { | |
| height: @eleven; | |
| } | |
| 32% { | |
| height: @eleven; | |
| } | |
| 36% { | |
| height: @eight; | |
| } | |
| 40% { | |
| height: @ten; | |
| } | |
| 44% { | |
| height: @ten; | |
| } | |
| 48% { | |
| height: @eleven; | |
| } | |
| 52% { | |
| height: @twelve; | |
| } | |
| 56% { | |
| height: @thirteen; | |
| } | |
| 60% { | |
| height: @twelve; | |
| } | |
| 64% { | |
| height: @twelve; | |
| } | |
| 68% { | |
| height: @eleven; | |
| } | |
| 72% { | |
| height: @ten; | |
| } | |
| 76% { | |
| height: @eleven; | |
| } | |
| 80% { | |
| height: @twelve; | |
| } | |
| 84% { | |
| height: @twelve; | |
| } | |
| 88% { | |
| height: @thirteen; | |
| } | |
| 92% { | |
| height: @ten; | |
| } | |
| 96% { | |
| height: @seven; | |
| } | |
| 100% { | |
| height: @four; | |
| } | |
| } | |
| @keyframes equalize2 { | |
| 0% { | |
| height: @twelve; | |
| } | |
| 4% { | |
| height: @thirteen; | |
| } | |
| 8% { | |
| height: @twelve; | |
| } | |
| 12% { | |
| height: @twelve; | |
| } | |
| 16% { | |
| height: @eleven; | |
| } | |
| 20% { | |
| height: @eleven; | |
| } | |
| 24% { | |
| height: @eleven; | |
| } | |
| 28% { | |
| height: @twelve; | |
| } | |
| 32% { | |
| height: @twelve; | |
| } | |
| 36% { | |
| height: @thirteen; | |
| } | |
| 40% { | |
| height: @thirteen; | |
| } | |
| 44% { | |
| height: @thirteen; | |
| } | |
| 48% { | |
| height: @eleven; | |
| } | |
| 52% { | |
| height: @eight; | |
| } | |
| 56% { | |
| height: @six; | |
| } | |
| 60% { | |
| height: @eight; | |
| } | |
| 64% { | |
| height: @ten; | |
| } | |
| 68% { | |
| height: @eleven; | |
| } | |
| 72% { | |
| height: @thirteen; | |
| } | |
| 76% { | |
| height: @twelve; | |
| } | |
| 80% { | |
| height: @twelve; | |
| } | |
| 84% { | |
| height: @eleven; | |
| } | |
| 88% { | |
| height: @eleven; | |
| } | |
| 92% { | |
| height: @nine; | |
| } | |
| 96% { | |
| height: @eleven; | |
| } | |
| 100% { | |
| height: @twelve; | |
| } | |
| } | |
| @keyframes equalize3 { | |
| 0% { | |
| height: @nine; | |
| } | |
| 4% { | |
| height: @seven; | |
| } | |
| 8% { | |
| height: @nine; | |
| } | |
| 12% { | |
| height: @eleven; | |
| } | |
| 16% { | |
| height: @thirteen; | |
| } | |
| 20% { | |
| height: @size / 2.666666667; | |
| } | |
| 24% { | |
| height: @fourteen; | |
| } | |
| 28% { | |
| height: @eleven; | |
| } | |
| 32% { | |
| height: @nine; | |
| } | |
| 36% { | |
| height: @eight; | |
| } | |
| 40% { | |
| height: @seven; | |
| } | |
| 44% { | |
| height: @five; | |
| } | |
| 48% { | |
| height: @eight; | |
| } | |
| 52% { | |
| height: @ten; | |
| } | |
| 56% { | |
| height: @eleven; | |
| } | |
| 60% { | |
| height: @thirteen; | |
| } | |
| 64% { | |
| height: @twelve; | |
| } | |
| 68% { | |
| height: @eleven; | |
| } | |
| 72% { | |
| height: @eleven; | |
| } | |
| 76% { | |
| height: @ten; | |
| } | |
| 80% { | |
| height: @twelve; | |
| } | |
| 84% { | |
| height: @thirteen; | |
| } | |
| 88% { | |
| height: @fourteen; | |
| } | |
| 92% { | |
| height: @twelve; | |
| } | |
| 96% { | |
| height: @ten; | |
| } | |
| 100% { | |
| height: @nine; | |
| } | |
| } | |
| .center-me { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| margin-top: -(@size / 2); | |
| margin-left: -(@size / 2); | |
| width: @size; | |
| height: @size; | |
| &:hover { | |
| background-color: white; | |
| } | |
| } | |
| *, | |
| ::before, | |
| ::after { | |
| box-sizing: border-box; | |
| } | |
| html { | |
| background-color: #e5e5e5; | |
| } | |
| html, | |
| body { | |
| height: 100%; | |
| } |