Анимированная иконка загрузки на CSS3

в 19:25, , рубрики: animation, css, css3, веб-дизайн, метки: ,

Анимированная иконка загрузки на CSS3

Идея взята у Dan Eden (demo), я лишь немного доработал способ.

Суть

В качестве круга используем обычный блок с рамкой. Рамка может иметь любой цвет и ширину (в этом и уникальность способа, что блок абсолютно независим от фона и прочих вещей). Рамку мы скругляем на 100% и делаем верхнюю её часть прозрачной. В этот самый пробел мы и вставляем треугольник (хак с нулевым размером блока и границей), используя наши любимые псевдо-элементы. Ну и под конец анимируем блок для имитации эффекта загрузки.

Разметка:

<span class="spinner"></span>​

CSS:


.spinner {
    display: block;
    width: 35px;
    height: 35px;
    margin: 80px 150px;
    position: relative;

    border: 2px solid rgba(0,0,0,0.5);
    border-top-color: transparent;
    border-radius: 100%;

    -webkit-animation: spin 1s infinite linear;
    -moz-animation: spin 1s infinite linear;
    -ms-animation: spin 1s infinite linear;
    -o-animation: spin 1s infinite linear;
    animation: spin 1s infinite linear;
 }
 
.spinner:after {
    content: '';
    display: block;
    width: 0;
    height: 0;
    position: absolute;
    top: -6px;
    left: 3px;
    
    border: 6px solid transparent;
    border-bottom-color: rgba(0,0,0,0.5);
    
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
}

@-webkit-keyframes spin {
    to { -webkit-transform: rotate(360deg); }
}

@-moz-keyframes spin {
    to { -moz-transform: rotate(360deg); }
}

@-ms-keyframes spin {
    to { -ms-transform: rotate(360deg); }
}

@-o-keyframes spin {
    to { -o-transform: rotate(360deg); }
}

@keyframes spin {
    to { transform: rotate(360deg); }
}​

Способ работает во всех современных браузерах (IE<=9, давай до свидания!)

Демо на jsfiddle

Автор: CyberAP

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js