Если вы открыты для использования CSS3 в сочетании с jQuery, возможно, этот метод вам пригодится:
HTML
<div id="click-me">Rotate</div>
<div id="rotate-box"></div>
CSS
#rotate-box{
width:50px;
height:50px;
background:#222222;
}
@-moz-keyframes rotatebox /*--for firefox--*/{
from{
-moz-transform:rotate(0deg);
}
to{
-moz-transform:rotate(360deg);
}
}
@-webkit-keyframes rotatebox /*--for webkit--*/{
from{
-webkit-transform:rotate(0deg);
}
to{
-webkit-transform:rotate(360deg);
}
}
#click-me{
font-size:12px;
cursor:pointer;
padding:5px;
background:#888888;
}
И если предположить, что рассматриваемый элемент должен вращаться при нажатии на ссылку / div / button, ваш jQuery будет выглядеть примерно так:
JQuery
$(document).ready(function(){
$('#click-me').click(function(){
$('#rotate-box').css({
//for firefox
"-moz-animation-name":"rotatebox",
"-moz-animation-duration":"0.8s",
"-moz-animation-iteration-count":"1",
"-moz-animation-fill-mode":"forwards",
//for safari & chrome
"-webkit-animation-name":"rotatebox",
"-webkit-animation-duration":"0.8s",
"-webkit-animation-iteration-count":"1",
"-webkit-animation-fill-mode" : "forwards",
});
});
});
Так как jQuery еще не может поддерживать rotate (deg) в .animate (), я немного обманул, предварительно определив ключевые кадры анимации в CSS3 и присвоив метку или идентификатор этой конкретной анимации. В этом примере эта метка / идентификатор определяется как rotatebox .
С этого момента происходит то, что в тот момент, когда на кликаемом элементе div нажимается, фрагмент jQuery будет использовать .css () и назначать необходимые свойства вращаемому элементу. В тот момент, когда эти свойства назначены, между элементом и ключевыми кадрами анимации CSS3 появится мост, что позволит выполнить анимацию. Вы также можете контролировать скорость анимации, изменяя свойство animation-duration.
Лично я считаю, что этот метод необходим только в том случае, если для активации поворота требуются события прокрутки мыши или мыши. Если предполагается, что поворот выполняется сразу после загрузки документа, тогда достаточно использовать только CSS3. То же самое относится к случаю, когда событие hover должно активировать вращение - вы просто определяете свойства анимации CSS3, которые связывают элемент с вращающейся анимацией в псевдоклассах элемента.
Мой метод здесь просто основан на предположении, что для активации поворота требуется событие click или что JQuery каким-то образом необходим для участия в этом. Я понимаю, что этот метод довольно утомителен, поэтому, если у кого-то есть вклад, не стесняйтесь предлагать. Также обратите внимание, что поскольку этот метод использует CSS3, он не будет работать должным образом в IE8 и ниже.