<div class="container">
<div class="box">
<div class="fading-lines"></div>
</div>
<div class="box">
<div class="dots"></div>
</div>
<div class="box">
<div class="twin-circles"></div>
</div>
<div class="box">
<div class="wave"></div>
</div>
<div class="box">
<div class="circle"></div>
</div>
<div class="box">
<div class="bouncing-bar">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
</div>
<div class="box">
<div class="focus"></div>
</div>
<div class="box">
<div class="spinner-dots"></div>
</div>
</div>
:root {
--icon-color: rgb(2, 90, 108);
--icon-color-lighten: rgba(2, 90, 108,0.25);
}
* {
box-sizing: border-box;
}
body {
margin: 0;
display: flex;
font-family: 'Montserrat', sans-serif;
height: 100vh;
width: 100%;
align-items: center;
justify-content: center;
overflow-x: hidden;
background-image: linear-gradient(to bottom, #f5f7fa 0%, #c3cfe2 100%);
background-attachment: fixed;
background-repeat: no-repeat;
background-size: cover;
}
.container {
display: flex;
flex-wrap: wrap;
align-items: center;
width: 600px;
height: 300px;
}
.box {
width: calc(25% - 12px);
height: 50%;
background-color: #fff;
border-radius: 4px;
margin: 16px 6px;
box-shadow: 0px 0px 10px 2px rgba(0,0,0,0.1);
display: flex;
align-items: center;
justify-content: center;
}
.dots {
position: relative;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: var(--icon-color);
opacity: 1;
animation: dot-middle 1s infinite linear;
&:before, &:after {
content:'';
position: absolute;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: var(--icon-color);
}
&:before {
left: -28px;
opacity: 0.25;
animation: dot-left 1s infinite linear;
}
&:after {
left: 28px;
opacity: 1;
animation: dot-right 1s infinite linear;
}
}
@keyframes dot-middle {
0% { opacity: 1; }
33% { opacity: 0.25; }
66% { opacity: 0.25; }
100% { opacity: 1; }
}
@keyframes dot-left {
0% { opacity: 0.25; }
33% { opacity: 1; }
66% { opacity: 0.25; }
}
@keyframes dot-right {
33% { opacity: 0.25; }
66% { opacity: 1; }
100% { opacity: 0.25; }
}
.twin-circles {
position: relative;
&:before, &:after {
content: '';
position: absolute;
border-radius: 50%;
width: 20px;
height: 20px;
background: var(--icon-color);
top: calc(50% - 10px);
left: calc(50% - 10px);
animation: 2s ease-in-out infinite;
animation-direction: alternate;
}
&:before {
opacity: 0.7;
animation-name: moveLeft;
}
&:after {
opacity: 0.5;
animation-name: moveRight;
}
}
@keyframes moveLeft {
25% { transform: translatex(-50%); }
50%, 60% { transform: translatex(0); }
100% { transform: translatex(50%); }
}
@keyframes moveRight {
25% { transform: translatex(50%); }
50%, 60% { transform: translatex(0); }
100% { transform: translatex(-50%); }
}
.wave {
position: relative;
border-radius: 50%;
width: 40px;
height: 40px;
opacity: 1;
&:before, &:after {
content: '';
position: absolute;
border-radius: 50%;
border: 1px var(--icon-color) solid;
width: 100%;
height: 100%;
left: 0px;
}
&:before {
animation: wave-outer 0.6s infinite linear;
transform: scale(1);
opacity: 1;
}
&:after {
animation: wave-inner 0.6s infinite linear;
transform: scale(0);
opacity: 0;
}
}
@keyframes wave-outer {
from {
opacity: 1;
transform: scale(1);
}
to {
opacity: 0;
transform: scale(1.5);
}
}
@keyframes wave-inner {
from {
opacity: 0;
transform: scale(0.5);
}
to {
opacity: 1;
transform: scale(1);
}
}
.circle {
width: 50px;
height: 50px;
border: 6px var(--icon-color-lighten) solid;
border-top: 6px var(--icon-color) solid;
border-radius: 50%;
animation: spin-circle .8s infinite linear;
}
@keyframes spin-circle {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.focus {
position: relative;
width: 50px;
height: 50px;
border-radius: 50%;
background-color: var(--icon-color);
&:before {
content: '';
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
border: 6px solid #fff;
top: -6px;
left: -6px;
animation: focus 1s infinite ease-in-out;
}
}
@keyframes focus {
0% { transform: scale(0); }
100% { transform: scale(1); }
}
.bouncing-bar { display: flex; }
.line {
height: 20px;
width: 4px;
background: var(--icon-color);
margin-right: 4px;
border-radius: 6px;
animation: line-bounce 1s infinite ease-in-out,;
&:nth-child(1) { animation-delay: 0s; }
&:nth-child(2) { animation-delay: 0.2s; }
&:nth-child(3) { animation-delay: 0.3s; }
&:nth-child(4) { animation-delay: 0.4s; }
}
@keyframes line-bounce {
0% { transform: scale(1); }
20% { transform: scale(1, 2); }
40% { transform: scale(1); }
}
.spinner-dots {
position: relative;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: var(--icon-color);
opacity: 1;
transform-origin: 50% 50%;
animation: spin-dot 1s infinite linear;
&:before, &:after {
content:'';
position: absolute;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: var(--icon-color);
}
&:before {
left: -28px;
opacity: 0.25;
}
&:after {
left: 28px;
opacity: 0.25;
}
}
@keyframes spin-dot {
0%{ transform:rotate(0deg); }
50%{ transform:rotate(180deg); }
100%{ transform:rotate(180deg); }
}
.fading-lines {
position: relative;
background: var(--icon-color);
width: 4px;
height: 32px;
border-radius: 6px;
animation: jump-load-1 1s ease infinite alternate;
animation-delay: 0.25s;
&:before, &:after {
content: '';
position: absolute;
background: var(--icon-color);
width: 4px;
height: 32px;
border-radius: 6px;
top: 0;
animation: jump-load-2 1s ease infinite;
animation-direction: alternate;
}
&:before { left: -8px; }
&:after { left: 8px; animation-delay: 0.4s; }
}
@keyframes jump-load-1 {
from { transform: translateY(20px); }
to { transform: translateY(-16px); }
}
@keyframes jump-load-2 {
from { transform: translateY(16px); }
to { transform: translateY(-16x); }
}
@media screen and (max-width: 520px) {
.box { width: calc(50% - 20px); }
}
View Compiled
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.