CSS3 Spin Animation
Я просмотрел довольно много демонстраций и понятия не имею, почему я не могу заставить вращение CSS3 работать. Я использую последнюю стабильную версию Chrome.
Скрипка: http://jsfiddle.net/9Ryvs/1/
div {
margin: 20px;
width: 100px;
height: 100px;
background: #f00;
-webkit-animation-name: spin;
-webkit-animation-duration: 40000ms;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-moz-animation-name: spin;
-moz-animation-duration: 40000ms;
-moz-animation-iteration-count: infinite;
-moz-animation-timing-function: linear;
-ms-animation-name: spin;
-ms-animation-duration: 40000ms;
-ms-animation-iteration-count: infinite;
-ms-animation-timing-function: linear;
-o-transition: rotate(3600deg);
}
<div></div>
9 ответов
Чтобы использовать CSS3 Animation, вы также должны определить фактические ключевые кадры анимации (которые вы назвали spin
)
Прочитайте https://developer.mozilla.org/en-US/docs/CSS/Tutorials/Using_CSS_animations для получения дополнительной информации
После того, как вы настроили время анимации, вам нужно определить внешний вид анимации. Это делается путем создания двух или более ключевых кадров с использованием
@keyframes
в властвуй. Каждый ключевой кадр описывает, как анимированный элемент должен отображаться в данный момент в течение последовательности анимации.
Демо на http://jsfiddle.net/gaby/9Ryvs/7/
@-moz-keyframes spin {
from { -moz-transform: rotate(0deg); }
to { -moz-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
from { -webkit-transform: rotate(0deg); }
to { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
from {transform:rotate(0deg);}
to {transform:rotate(360deg);}
}
Вы не указали ни одного ключевого кадра. Я заставил это работать здесь.
div {
margin: 20px;
width: 100px;
height: 100px;
background: #f00;
-webkit-animation: spin 4s infinite linear;
}
@-webkit-keyframes spin {
0% {-webkit-transform: rotate(0deg);}
100% {-webkit-transform: rotate(360deg);}
}
Вы действительно можете сделать много действительно крутых вещей с этим. Вот тот, который я сделал ранее.
:)
NB. Вы можете пропустить необходимость записывать все префиксы, если используете -prefix-free.
Начиная с последней версии Chrome/FF и в IE11 префикс -ms/-moz/-webkit не требуется. Вот более короткий код (на основе предыдущих ответов):
div {
margin: 20px;
width: 100px;
height: 100px;
background: #f00;
/* The animation part: */
animation-name: spin;
animation-duration: 4000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes spin {
from {transform:rotate(0deg);}
to {transform:rotate(360deg);}
}
Демонстрация в реальном времени: http://jsfiddle.net/9Ryvs/3057/
HTML с удивительным шрифтом.
<span class="fa fa-spinner spin"></span>
CSS
@-moz-keyframes spin {
to { -moz-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
to {transform:rotate(360deg);}
}
.spin {
animation: spin 1000ms linear infinite;
}
Единственный ответ, который дает правильный 359deg:
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(359deg); }
}
&.active {
animation: spin 1s linear infinite;
}
Вот полезный градиент, чтобы вы могли доказать, что он вращается (если это круг):
background: linear-gradient(to bottom, #000000 0%,#ffffff 100%);
Для завершения, вот пример Sass / Compass, который действительно сокращает код, скомпилированный CSS будет включать необходимые префиксы и т. Д.
div
margin: 20px
width: 100px
height: 100px
background: #f00
+animation(spin 40000ms infinite linear)
+keyframes(spin)
from
+transform(rotate(0deg))
to
+transform(rotate(360deg))
Для поворота вы можете использовать ключевые кадры и преобразование.
div {
margin: 20px;
width: 100px;
height: 100px;
background: #f00;
-webkit-animation-name: spin;
-webkit-animation-duration: 40000ms;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-moz-animation-name: spin;
-moz-animation-duration: 40000ms;
-moz-animation-iteration-count: infinite;
-moz-animation-timing-function: linear;
-ms-animation-name: spin;
-ms-animation-duration: 40000ms;
-ms-animation-iteration-count: infinite;
-ms-animation-timing-function: linear;
}
@-webkit-keyframes spin {
from {
-webkit-transform:rotate(0deg);
}
to {
-webkit-transform:rotate(360deg);
}
}
Для парней, которые все еще ищут какой-нибудь крутой и простой счетчик, у нас есть несколько примеров счетчика на сайте fontawesome: https://fontawesome.com/v4.7.0/examples/
Вам просто нужно проверить нужный счетчик с помощью отладчика и скопировать стили css.
@keyframes spin {
from {transform:rotate(0deg);}
to {transform:rotate(360deg);}
}
это заставит вас ответить на вопрос