css3定义的动画默认只播放一次,之后重新绑定到节点也无效,无法按期望由事件触发,重新播放。
解决方案:设置动画无限循环播放,初始状态设为暂停,监听到事件后修改状态为播放,监听循环播放事件时修改状态为暂停。
以下代码只在chrome测试通过。
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<style>
div
{
width:100px;
height:100px;
background:red;
/* infinite 无限循环 */
-webkit-animation:myfirst 2s infinite paused;
}
@-webkit-keyframes myfirst
{
from {background:red;}
to {background:yellow;}
}
</style>
</head>
<body>
<div></div>
<script>
$("div").on("mouseenter", function() {
this.style.webkitAnimationPlayState = "running";
});
//重复播放事件
$("div").on('webkitAnimationIteration', function() {
this.style.webkitAnimationPlayState = "paused";
});
</script>
</body>
</html>