Поворот фонового изображения с помощью CSS3
У меня есть фоновое изображение со стрелкой, указывающей вправо. Когда пользователь нажимает на кнопку, выбранное состояние меняет стрелку на указатель вниз (используя другое фоновое положение в моем изображении спрайта).
Есть ли способ анимации с использованием CSS3, поэтому после нажатия кнопки jQuery присваивает ему "выбранный" класс, он будет вращаться в анимации (всего 90 градусов) справа налево? (предпочтительно, используя одиночное изображение/позицию со стрелкой, указывающей вправо)
Я не уверен, нужно ли использовать фреймы преобразования или ключевой анимации.
Ответы
Ответ 1
вы можете использовать ::after
(или ::before
) pseudo-element
, чтобы сгенерировать анимацию
div /*some irrelevant css */
{
background:-webkit-linear-gradient(top,orange,orangered);
background:-moz-linear-gradient(top,orange,orangered);
float:left;padding:10px 20px;color:white;text-shadow:0 1px black;
font-size:20px;font-family:sans-serif;border:1px orangered solid;
border-radius:5px;cursor:pointer;
}
/* element to animate */
div::after /* you will use for example "a::after" */
{
content:' ►'; /* instead of content you could use a bgimage here */
float:right;
margin:0 0 0 10px;
-moz-transition:0.5s all;
-webkit-transition:0.5s all;
}
/* actual animation */
div:hover::after /* you will use for example "a.selected::after" */
{
-moz-transform:rotate(90deg);
-webkit-transform:rotate(90deg);
}
HTML:
<div>Test button</div>
в вашем случае вы будете использовать класс element.selected вместо
jsfiddle demo: http://jsfiddle.net/p8kkf/
надеюсь, что это поможет
Ответ 2
Вот вращающийся класс css, который я использовал для вращения фонового изображения:
.rotating {
-webkit-animation: rotating-function 1.25s linear infinite;
-moz-animation: rotating-function 1.25s linear infinite;
-ms-animation: rotating-function 1.25s linear infinite;
-o-animation: rotating-function 1.25s linear infinite;
animation: rotating-function 1.25s linear infinite;
}
@-webkit-keyframes rotating-function {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
}
}
@-moz-keyframes rotating-function {
from {
-moz-transform: rotate(0deg);
}
to {
-moz-transform: rotate(360deg);
}
}
@-ms-keyframes rotating-function {
from {
-ms-transform: rotate(0deg);
}
to {
-ms-transform: rotate(360deg);
}
}
@-o-keyframes rotating-function {
from {
-o-transform: rotate(0deg);
}
to {
-o-transform: rotate(360deg);
}
}
@keyframes rotating-function {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}