<div class="spinners">
<h1>SPINNERS</h1>
<div class="spinner spinner-1">
<div class="spinner spinner-1--sub">
<div class="spinner spinner-1--sub" id="subsub">
</div>
</div>
</div>
<div class="spinner spinner-2"></div>
<div class="spinner spinner-3">
<div class="spinner-3__container">
<div class="spinner-3__bar spinner-3__bar--1"></div>
<div class="spinner-3__bar spinner-3__bar--2"></div>
<div class="spinner-3__bar spinner-3__bar--3"></div>
</div>
</div>
<div class="spinner spinner-4">
<div class"spinner-4__ring spinner-4__ring--1"></div>
<div class"spinner-4__ring spinner-4__ring--2"></div>
<div class"spinner-4__ring spinner-4__ring--3"></div>
</div>
<div class="spinner spinner-5">
<div class="spinner-5__face">
<div class="spinner-5__eye spinner-5__eye--1"></div>
<div class="spinner-5__eye spinner-5__eye--2"></div>
<div class="spinner-5__mouth"></div>
</div>
</div>
<div class="spinner spinner-6"></div>
</div>
// variables
$primary: #00e673;
// general
body {
background-color: #f2f2f2;
padding: 10px;
font-family: sans-serif;
}
h1 {
color: $primary;
}
// spinners
.spinners {
background-color: #fff;
padding: 30px;
text-align: center;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
}
.spinner {
background-color: #eee;
height: 100px;
width: 100px;
border-radius: 50%;
position: relative;
margin: 50px;
display: inline-block;
&:before, &:after {
content: '';
display: block;
height: 100px;
width: 100px;
border-radius: 50%;
}
}
.spinner-1 {
&:before, &:after {
border: 4px solid transparent;
position: absolute;
top: -4px;
left: -4px;
}
&:before {
border-bottom-color: $primary;
animation: orbit 2s linear infinite;
}
&:after {
border-top-color: $primary;
animation: orbit 1s linear infinite;
}
&--sub {
position: absolute;
top: -44%;
left: -44%;
height: 80px;
width: 80px;
&:before, &:after {
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
border: 4px solid transparent;
}
&:before {
border-bottom-color: $primary;
animation: orbit 1s linear infinite;
}
&:after {
border-top-color: $primary;
animation: orbit 2s linear infinite;
}
#subsub {
position: absolute;
top: -50%;
left: -50%;
height: 60px;
width: 60px;
&:before, &:after {
height: 60px;
width: 60px;
position: absolute;
top: 0;
left: 0;
}
&:before {
border-bottom-color: $primary;
animation: orbit 2s linear infinite;
}
&:after {
border-top-color: $primary;
animation: orbit 1s linear infinite;
}
}
}
}
.spinner-2 {
border-radius: 5%;
border: 4px solid $primary;
animation: round 4s ease-in-out infinite;
&:before {
border-radius: 5%;
height: 70px;
width: 70px;
border: 4px solid $primary;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation: round 4s ease-in-out .2s infinite;
}
&:after {
border-radius: 5%;
height: 40px;
width: 40px;
border: 4px solid $primary;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation: round 4s ease-in-out .2s infinite;
}
}
.spinner-3 {
border-radius: 0;
&__container {
height: 100%;
width: 100%;
position: absolute;
top: 0;
left: 0;
}
&__bar {
height: 20px;
width: auto;
background-color: $primary;
margin: 10px;
&--1 {
animation: stretch 2s ease-in-out .2s infinite;
}
&--2 {
animation: stretch 2s ease-in-out .4s infinite;
}
&--3 {
animation: stretch 2s ease-in-out .6s infinite;
}
}
}
.spinner-4 {
border-radius: 0;
&:before {
height: 25px;
width: 25px;
border: 5px solid $primary;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation: to_square 2s ease-in-out infinite;
}
&:after {
height: 90px;
width: 90px;
border-radius: 0%;
border: 5px solid $primary;
animation: to_circle 2s ease-in-out infinite;
}
}
.spinner-5 {
animation: rotate 5s ease-in-out infinite;
&__face {
height: 100px;
width: 100px;
position: absolute;
top: 0;
left: 0;
}
&__eye {
height: 10px;
width: 10px;
border-radius: 50%;
background-color: $primary;
display: inline-block;
animation: blink 1s linear infinite;
&--1 {
position: absolute;
top: 40%;
left: 10%;
}
&--2 {
position: absolute;
top: 40%;
left: 80%;
}
}
&__mouth {
content: '';
display: block;
height: 60px;
width: 30px;
border-radius: 50%;
border: 3px solid transparent;
border-bottom-color: $primary;
position: absolute;
top: -12%;
left: 30%;
}
}
.spinner-6 {
}
// keyframes
@keyframes orbit {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes round {
0%, 100%{
border-radius: 5%;
}
50% {
border-radius: 50%;
transform: rotate(360deg);
}
}
@keyframes stretch {
0%, 100% {
width: 10px;
}
50% {
width: 80%;
}
}
@keyframes to_square {
0%, 100% {
border-radius: 50%;
}
50% {
border-radius: 0%;
height: 60px;
width: 60px;
}
}
@keyframes to_circle {
0%, 100% {
border-radius: 0%;
}
50% {
border-radius: 50%;
transform: scale(.15);
}
}
@keyframes rotate {
0%, 100% {
transform: rotate(0deg);
}
50% {
transform: rotate(360deg);
}
}
@keyframes blink {
0% {
height: 0px;
}
25% {
height: 10px;
}
50% {
height: 10px;
}
100% {
height: 0px;
}
}
View Compiled
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.