Preloader
https://danielpietrasik.pl/css3-preloaders/
by Daniel Pietrasik
HTML
<!--
- CSS3 Preloaders
- https://danielpietrasik.pl/css3-preloaders/
-->
<div class="box">
<div class="container">
<div class="cube">
<div class="half1">
<div class="part part1"></div>
<div class="part part2"></div>
<div class="part part5"></div>
</div>
<div class="half2">
<div class="part part3"></div>
<div class="part part4"></div>
<div class="part part6"></div>
</div>
</div>
</div>
</div>
CSS
/**
* CSS3 Preloaders
* https://danielpietrasik.pl/css3-preloaders/
**/
body {
background: #fff;
}
.box {
width: 150px;
height: 150px;
margin: 20px auto;
}
.cube,
.half1,
.half2,
.container {
transform-style: preserve-3d;
}
.cube {
width: 100px;
height: 100px;
animation: cube 10s forwards infinite;
transform-origin: center 50px;
transform-style: preserve-3d;
}
.half1 {
height: 40px;
top: 0;
position: absolute;
animation: half 10s forwards infinite;
transform-origin: 50% 100%;
}
.part {
width: 18px;
height: 18px;
border: 1px solid #fff;
background-color: #fbc2c5;
position: absolute;
}
.part1 {
top: 0;
left: 40px;
transform-origin: 50% 100%;
animation: part1 10s forwards infinite;
}
.part2 {
top: 20px;
left: 40px;
transform-origin: 50% 0%;
animation: part2 10s forwards infinite;
}
.part3 {
top: 40px;
left: 40px;
transform-origin: 50% 0%;
animation: part3 10s forwards infinite;
}
.part4 {
top: 60px;
left: 40px;
transform-origin: 50% 0%;
animation: part4 10s forwards infinite;
}
.part5 {
left: 20px;
top: 20px;
transform-origin: 100% 50%;
animation: part5 10s forwards infinite;
}
.part6 {
left: 60px;
top: 40px;
transform-origin: 0% 50%;
animation: part6 10s forwards infinite;
}
.container {
position: relative;
width: 100px;
height: 100px;
margin: 0 auto;
padding-top: 33px;
perspective: 300px;
transform-style: preserve-3d;
}
@keyframes cube {
0% {
transform: rotateX(0deg);
}
30% {
transform: rotateX(0deg);
}
40% {
transform: rotateX(45deg) rotateY(0deg) rotateZ(45deg);
}
60% {
transform: rotateX(60deg) rotateY(0deg) rotateZ(45deg);
}
65% {
transform: rotateX(60deg) rotate(45deg) rotateZ(180deg);
}
70% {
transform: rotateX(60deg) rotate(45deg) rotateZ(180deg);
}
75% {
transform: rotateX(60deg) rotate(45deg) rotateZ(360deg);
}
80% {
transform: rotateX(60deg) rotate(45deg) rotateZ(360deg);
}
...