<ul>
<li>
<div class="magic"></div>
</li><li>
<div class="spin"></div>
</li><li>
<div class="one"></div>
</li><li>
<div class="multi">
<div></div>
</div>
</li><li>
<div class="conical"></div>
</li><li>
<div class="bounce">
<div></div>
<div></div>
<div></div>
</div>
</li><li>
<div class="ios">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</li><li>
<div class="two"></div>
</li><li>
<div class="portal">
<div>
<div></div>
<div></div>
<div></div>
</div>
</div>
</li><li>
<div class="follow">
<div>
<div></div>
</div>
</div>
</li>
</ul>
// Animations
@keyframes clockwise {
to {transform: rotate(360deg) translatez(0);}
}
@keyframes counter-clockwise {
to {transform: rotate(-360deg) translatez(0);}
}
@keyframes bounce {
50% {transform: translatey(-20px);}
100% {transform: translatey( 20px);}
}
@keyframes zoom {
to {
width: calc(250px + 20px);
margin-left: calc(-125px - 10px);
margin-top: calc(-125px - 10px);
border-width: 10px;
border-color: hsla(0, 0%, 100%, 1);
}
}
@keyframes follow {
0% { transform: translatex(-45px); }
100% { transform: translatex( 60px); }
}
// Magic throbber
.magic {
background-color: transparent;
width: 10px;
height: 10px;
border-radius: 100%;
box-shadow:
12px -12px 0 hsla(0, 0%, 100%, 0.125),
17px 0 0 -1px hsla(0, 0%, 100%, 0.250),
12px 12px 0 -2px hsla(0, 0%, 100%, 0.375),
0 17px 0 -3px hsla(0, 0%, 100%, 0.500),
-12px 12px 0 -4px hsla(0, 0%, 100%, 0.625),
-17px 0 0 -5px hsla(0, 0%, 100%, 0.750),
-12px -12px 0 -6px hsla(0, 0%, 100%, 0.875),
0 -17px 0 -7px hsla(0, 0%, 100%, 1.000);
animation: clockwise 0.75s steps(8, end) infinite;
}
// Dot throbber
.spin {
background-color: transparent;
width: 10px;
height: 10px;
border-radius: 100%;
box-shadow:
12px -12px hsla(0, 0%, 100%, 0.125),
17px 0 hsla(0, 0%, 100%, 0.250),
12px 12px hsla(0, 0%, 100%, 0.375),
0 17px hsla(0, 0%, 100%, 0.500),
-12px 12px hsla(0, 0%, 100%, 0.625),
-17px 0 hsla(0, 0%, 100%, 0.750),
-12px -12px hsla(0, 0%, 100%, 0.875),
0 -17px hsla(0, 0%, 100%, 1.000);
animation: clockwise 0.75s steps(8, end) infinite;
}
// Line throbber
.one {
height: 50px;
width: 50px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent transparent hsla(0, 0%, 100%, 0.50);
border-radius: 100%;
animation: clockwise 0.35s linear infinite;
}
// Tech throbber
.multi {
height: 50px;
width: 50px;
border-width: 5px;
border-style: solid;
border-color: transparent hsla(0, 0%, 100%, 0.25) transparent hsla(0, 0%, 100%, 0.50);
border-radius: 100%;
animation: clockwise 1.01s linear infinite;
}
.multi:after {
position: absolute;
display: block;
top: 5px;
right: 5px;
height: 30px;
width: 30px;
border-width: 5px;
border-style: solid;
border-color: hsla(0, 0%, 100%, 0.50) transparent transparent;
border-radius: 100%;
}
.multi div {
position: relative;
height: 40px;
width: 40px;
border-width: 5px;
border-style: solid;
border-color: hsla(0, 0%, 100%, 0.25) transparent hsla(0, 0%, 100%, 0.5);
border-radius: 100%;
animation: counter-clockwise 0.49s linear infinite;
}
.multi div:after {
position: absolute;
display: block;
top: 0;
right: 0;
height: 30px;
width: 30px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent hsla(0, 0%, 100%, 0.25) ;
border-radius: 100%;
}
// Conical throbber
/* This preloader will eventually use an SVG conical gradient; conical gradients will be available in SVG2. For now, we must use an image. */
.conical {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA+FJREFUeNq8md1u2zAMhSlZ64BiF3uYPcbeH3uGAQW2mxVtY3EOJhccw58jO5sB1q7tOPx8SEpiCjN/pz9bGSaPC3C+APfXOz7LPN+2Pzz+YXGBxP+kzlubfkZ2v+UMgfcX4zw1BWA5wpRvRcDMbjMKuS+iGc7PKPG/tzC0CICZfbtnnDuUN81xGg2rYuQKClSc+46El5nsFKjjOa6vMZDsUfJnheEGrk2+dUS9ksCUQJVIgUgtCASpVggACnQoX9rJxGan/LJTkosDcRYmBWE1Onv5wSeSHbGagL6DsJOs8lxXMOyM7MUZ7RE1Moip8hvFuISRx6wcR6qWB1EBCHNA7JOJqgEkiIbhbGpxQImSTVGi8NJf0NWeA+dncqQ6+2w2bOYIB4MTKQV3GKuaMQBQlRV1XI6ElgRgQPYuYKQaPYDJQqcCaliqUJbsnDwkG19YVS1rwVUDZVIAL7SsMmo9jA0lvLeuN8vxZUINq5S/hxY5N0Vhxo6jVlEgI4ktiApCuCAlGcC8sGDDSDmuIRdhDQirbGl8E1qUzIssRYp46/vb1U53FVISYjHCaiak/gLpwSQQmaXqcaWLz0q4Or7vah8ECKIEBS/aHBCzxU+k1O7QOmx/Qfty+ur0w2YfB8ji5AUlCpgVsxkDGrIGzyZ+V8fehu3b42afhBoViX3UpwzkHtvTZl/+dXulJdOJaInLwcRxD6+XzX5u9nWzb+P4RVzX1Y6B76NMkezDHOy72F8dvGz2utnzZj/GfZ/H/nlcu4hcYlUkIjDTTx1aDEBY1gXEOnLj+uZ/jT2NJH8UFexNFYYePD/zrSAgHIB0ZZdhO8j+5nf1H4bjO8x+v36OB+JCtSRGZyBW4djrgLkIxxcxhuiJ5HoChmWOMJDAGkLmhAR5E0CrcnoxvpPEDGFVgywSamwle6ZED9RYhfOrSmQ591rE1EVeWwWQnP91QBm2qhYn1gOQ1UlgUqP/ohz0lr/d6AFYy2puSR5wosjqgHTD0WLAcNJbLkmIsVW1ZiEsNSy1kEWVt6bpKEwDACIQz/kedB/1woqT2QUULc0IAcv5SJGelM6sgxINfBaI2bVpk0rwJISVIyVYZWYgXh+NGphMHgQD9R5tXlenD5A1A6EcQdSYgZmF8FRxZ78zMOh1tF1aVXvpSIv2bopkhv4eUoOmeXdatDcLK6Ra8YTj9/qhx1OkewurngChMAQmO01AWE1zGWK9AWEVHXMwBqFqEAChAW5mDDMjO0+oQUCLKVOFZjosSI4cgaEktJA8iUCqlSPoYHgU6GiiaxDtfJkFOZMLR367t34FyFqm9FuAAQC4HVFM/WGI7QAAAABJRU5ErkJggg==');
background-position: 50%;
background-size: cover;
width: 50px;
height: 50px;
border-radius: 100%;
-webkit-mask: radial-gradient( circle closest-side, hsla(0, 0%, 0%, 0), hsla(0, 0%, 0%, 0) 84%, hsla(0, 0%, 0%, 1) 86%, hsla(0, 0%, 0%, 1) 100%) no-repeat 50% border;
animation: clockwise 0.75s ease-in-out infinite;
}
// Bounce throbber
.bounce div {
border-radius: 100%;
height: 10px;
width: 10px;
background-color: hsl(0, 0%, 100%);
animation: bounce 1s ease-in-out infinite;
position: absolute;
top: 0;
transform: translatey(20px);
}
.bounce div:first-of-type {
left: -20px;
animation-delay: 0.20s;
}
.bounce div:nth-of-type(2) {
animation-delay: 0.10s;
}
.bounce div:last-of-type {
left: 20px;
}
// iOS throbber
.ios {
width: 0;
height: 0;
animation: clockwise 1s steps(8, end) infinite;
}
.ios div {
width: 6px;
height: 40px;
margin-top: calc(-40px/2);
margin-left: calc(-6px/2);
position: absolute;
}
.ios div:before,
.ios div:after {
background-color: hsla(0, 0%, 100%, 0.2);
display: block;
position: absolute;
width: 100%;
height: 25%;
}
.ios div:before {
border-radius: 6px 6px 0 0;
top: 0;
}
.ios div:after {
border-radius: 0 0 6px 6px;
bottom: 0;
}
.ios div:nth-of-type(1):after {
background-color: hsla(0, 0%, 100%, 0.625);
}
.ios div:nth-of-type(2) {
transform: rotate(45deg) translatez(0);
}
.ios div:nth-of-type(2):after {
background-color: hsla(0, 0%, 100%, 0.75);
}
.ios div:nth-of-type(3) {
transform: rotate(90deg) translatez(0);
}
.ios div:nth-of-type(3):after {
background-color: hsla(0, 0%, 100%, 0.875);
}
.ios div:nth-of-type(4) {
transform: rotate(135deg) translatez(0);
}
.ios div:nth-of-type(4):after {
background-color: hsla(0, 0%, 100%, 1.0);
}
// Two-tone throbber
.two {
height: 50px;
width: 50px;
border-width: 5px;
border-style: solid;
border-color: hsla(0, 0%, 100%, 0.75)
hsla(0, 0%, 100%, 0.75) hsla(0, 0%, 100%, 0.25) hsla(0, 0%, 100%, 0.25);
border-radius: 100%;
animation: clockwise .5s linear infinite;
}
// Portal throbber
.portal {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
}
.portal > div {
position: relative;
width: 0;
height: 0;
align-self: center;
}
.portal > div > div {
position: absolute;
width: 0;
align-self: center;
border-width: 0;
border-style: solid;
border-color: hsla(0, 0%, 100%, 0);
border-radius: 50%;
animation: zoom 1s ease-in infinite;
}
.portal > div > div:after {
display: block;
padding-top: 100%;
}
.portal > div > div:nth-of-type(2) {
animation-delay: 0.33s;
}
.portal > div > div:nth-of-type(3) {
animation-delay: 0.67s;
}
// Follow throbber
.follow {
width: 80px;
display: flex;
justify-content: center;
overflow: hidden;
}
.follow div {
align-self: center;
width: 10px;
height: 20px;
padding: 2px;
background-color: hsla(0, 0%, 0%, 0.3);
box-shadow:
-15px 0 0 hsla(0, 0%, 0%, 0.3),
-30px 0 0 hsla(0, 0%, 0%, 0.3),
15px 0 0 hsla(0, 0%, 0%, 0.3),
30px 0 0 hsla(0, 0%, 0%, 0.3);
}
.follow div > div {
position: relative;
width: 100%;
height: 100%;
background-color: hsl(0, 0%, 100%);
box-shadow:
-15px 0 0 hsl(0, 0%, 100%),
15px 0 0 hsl(0, 0%, 100%);
animation: follow 1s steps(7, end) infinite;
}
// Global Styles
*,
*:before,
*:after { box-sizing: border-box; }
*:before, *:after {
content: '';
}
body {
background-color: hsl(0, 0%, 50%);
padding: 10px;
}
ul {
list-style: none;
width: 100%;
}
li {
display: inline-flex;
justify-content: center;
position: relative;
width: calc(20% - (10px * (5 / 5)));
height: 100px;
margin-left: 10px;
margin-bottom: 10px;
background-color: hsla(0, 0%, 0%, 0.2);
box-shadow:
inset 0 1px 3px hsla(0, 0%, 0%, 0.4),
0 0 1px hsla(0, 0%, 100%, 0.4);
border-radius: 5px;
overflow: hidden;
}
li:nth-of-type(5n+1) {
margin-left: 0;
}
li > * {
position: relative;
align-self: center;
}
li:hover * {
animation-play-state: running !important;
}
View Compiled
// Pause Animations
window.addEventListener("load",
setTimeout(function(){
var l = document.getElementsByTagName('li');
for (var i = 0; i < l.length; i++)
{
var m = l[i].getElementsByTagName('*')
for (var j = 0; j < m.length; j++)
{
m[j].style.webkitAnimationPlayState="paused";
}
}
},3000), false);
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.