js控制运动框架animation
js控制运动框架animation
目标:做一个通过按钮控制旋转的动画,下面的是效果图:
想想都很简单,就写个css框架,然后用js给img节点添加animation样式。
所以一开始是这样的的:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15/*旋转动画*/
@keyframes rotation{
from{
transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
}
to{
transform: rotate(360deg);
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-o-transform: rotate(360deg);
}
}1
2
3$positer.css('animation', 'rotation 30s linear infinite'); //开始旋转动画
$positer.css('animation', ''); //停止旋转动画
然而,问题就来了。停止的时候图片直接回归原始状态。
这得咋办呢?难道要写一个动画框架,用定时器去使transform的rotate去转动吗?
好说干就干1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24var deg = 0; //记录旋转角度
var rotateTimer;
function startRotation($obj, speed) {
clearInterval(rotateTimer);
rotateTimer = setInterval(function(){
deg++;
if(deg >= 360){
deg = 0
}
$obj.css('-webkit-transform', 'rotate('+ deg +'deg)');
}, speed)
}
function stopRotation() {
clearInterval(rotateTimer);
}
//调用
var $positer = $('#playerPage .positer img');
startRotation($positer, 80); //转
stopRotation() //停
哈哈,就是这么简单。
。。。
阿西吧,旧的问题解决了,只是新的问题来的开始而已。这时,播放的动画没有想animation那么流畅,一卡一卡的。天啊,这怎么解决,假如有个属性控制animation的播放不就好了嘛,那用搞这么多事情。
一百度,果真有!1
animation-play-state: paused || running;
代码:1
2
3
4
5
6
7
8#playerPage .positer img{
animation: rotation 30s linear infinite;
-webkit-animation: rotation 30s linear infinite;
-moz-animation: rotation 30s linear infinite;
animation-play-state: paused;
-webkit-animation-play-state: paused;
-moz-animation-play-state: paused;
}1
2
3$positer.css('animation-play-state', 'running'); //开始旋转动画
$positer.css('animation-play-state', 'paused'); //停止旋转