three-dots
Version:
CSS loading animations made with single element
55 lines (45 loc) • 1.36 kB
text/less
/**
* ==============================================
* Experimental: Gooey Effect
* Dot Hourglass
* ==============================================
*/
@dot-color-hsl: hsl(0, 100%, 0%);
@r: @dot-spacing;
@originX: @dot-width/2;
@originY: @dot-height/2 + @r;
.dot-hourglass {
.dot(@width: 12px, @height: 12px, @radius: 6px, @bg-color: @dot-color-hsl, @color: transparent);
position: relative;
top: -@r;
margin: -1px 0;
filter: blur(2px);
transform-origin: @originX @originY;
animation: dot-hourglass 2.4s .6s infinite ease-in-out;
&::before,
&::after {
.dot(@width: 12px, @height: 12px, @radius: 6px, @bg-color: @dot-color-hsl, @color: transparent);
content: "";
filter: blur(2px);
display: inline-block;
position: absolute;
left: 0;
top: 0;
}
&::before { top: @r + @r; }
&::after { animation: dot-hourglass-after 2.4s infinite cubic-bezier(.65, .05, .36, 1); }
}
@keyframes dot-hourglass {
0% { transform: rotateZ(0deg); }
25% { transform: rotateZ(180deg); }
50% { transform: rotateZ(180deg); }
75% { transform: rotateZ(360deg); }
100% { transform: rotateZ(360deg); }
}
@keyframes dot-hourglass-after {
0% { transform: translateY(0); }
25% { transform: translateY(@r*2); }
50% { transform: translateY(@r*2); }
75% { transform: translateY(0); }
100% { transform: translateY(0); }
}