02.09.2017
Анимированный прелоадер на чистом СSS
Часто необходимо сделать для сайта или какого то элемента загрузку в фоне и для этого нужно использовать прелоадер, который будет отображать процесс загрузки.
Необычный вариант такого прелоадера предложил Julien Benchetrit / Подробнее.
Такой прелоадер использует исключительно CSS и ничего более, а выглядит оригинально и в виде сетки сайта, которую можно сделать под свой сайт.
<div class="site-container"> <div class="loader"> <div class="logo"> <div class="white"></div> <div class="orange"></div> <div class="red"></div> </div> <p>Loading</p> </div> </div>
/* Этот код для примера */
.site-container {
position: relative;
height: 300px;
width: 100%;
}
/* Далее код прелоадера */
.loader {
position: absolute; /* Заменить на fixed, чтобы прелоадер был на весь экран */
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #fff;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 100;
}
.loader p {
margin: 1em 0 0 0;
font-size: 16px;
}
.logo {
width: 100px;
height: 100px;
box-sizing: border-box;
position: relative;
background-color: white;
}
.logo::before,
.logo::after {
z-index: 1;
box-sizing: border-box;
content: '';
position: absolute;
border: 4px solid transparent;
width: 0;
height: 0;
animation-direction: alternate;
animation-timing-function: linear;
}
.logo::before {
top: 0;
left: 0;
animation: border-before 1.5s infinite;
animation-direction: alternate;
}
.logo::after {
bottom: 0;
right: 0;
animation: border-after 1.5s infinite;
animation-direction: alternate;
}
.logo > div {
position: absolute;
opacity: 0;
}
.white {
border-left: 4px solid #333;
top: 0;
bottom: 0;
right: 0;
width: 0;
animation: white 1.5s infinite;
animation-direction: alternate;
}
.orange {
border-top: 4px solid #333;
left: 0;
bottom: 0;
right: 0;
height: 0;
background-color: #1967c3;
animation: orange 1.5s infinite;
animation-direction: alternate;
}
.red {
border-right: 4px solid #333;
top: 0;
bottom: 0;
left: 0;
width: 0;
background-color: #EA5664;
animation: red 1.5s infinite;
animation-direction: alternate;
}
@keyframes border-before {
0% {
width: 0;
height: 0;
border-top-color: #333;
border-right-color: transparent;
}
12.49% {
border-right-color: transparent;
}
12.5% {
height: 0;
width: 100%;
border-top-color: #333;
border-right-color: #333;
}
25%,
100% {
width: 100%;
height: 100%;
border-top-color: #333;
border-right-color: #333;
}
}
@keyframes border-after {
0%,
24.99% {
width: 0;
height: 0;
border-left-color: transparent;
border-bottom-color: transparent;
}
25% {
width: 0;
height: 0;
border-left-color: transparent;
border-bottom-color: #333;
}
37.49% {
border-left-color: transparent;
border-bottom-color: #333;
}
37.5% {
height: 0;
width: 100%;
border-left-color: #333;
border-bottom-color: #333;
}
50%,
100% {
width: 100%;
height: 100%;
border-left-color: #333;
border-bottom-color: #333;
}
}
@keyframes red {
0%,
50% {
width: 0;
opacity: 0;
}
50.01% {
opacity: 1;
}
65%,
100% {
opacity: 1;
width: 27%;
}
}
@keyframes orange {
0%,
65% {
height: 0;
opacity: 0;
}
65.01% {
opacity: 1;
}
80%,
100% {
opacity: 1;
height: 50%;
}
}
@keyframes white {
0%,
75% {
width: 0;
opacity: 0;
}
75.01% {
opacity: 1;
}
90%,
100% {
opacity: 1;
width: 23%;
}
}
Демонстрация
Loading
Нам будет приятно
Поделитесь
Комментарии