js之动画事件
首先,动画事件主要包括以下三个animationstart,animationiteration和animationend事件,下面做简单分别介绍。
animationstart | 该事件在css动画开始播放时触发 |
---|---|
animationiteration | 该事件在css动画重新播放时触发 |
animationend | 该事件在css动画结束播放时触发 |
我们知道animation主要有6个属性,分别来设置动画呈现出来哦的效果,这个在我的另一篇文章中有介绍,我这边简单展示一下。
animation:name duration timing-function delay iteration-count direction;
分别是:动画名称 动画持续事件 动画运行速度曲线 动画开始时的运行时间 动画播放次数 规定是否反向轮流播放。
下面一段代码讲述的是采用监听动画开始,动画再次播放和动画结束做出相应的改变,这里用到addEventListener监听动画开始、动画持续播放、动画结束播放。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>animation动画篇</title>
<style type="text/css">
#con
{
width: 100px;
height: 100px;
background: #FFA500;
position: relative;
}
@-moz-keyframes myanimation
{
from{left: 100px;top:0px;}
to{left: 200px;top: 100px;}
}
@-webkit-keyframes myanimation
{
from{left: 100px;top: 0px;}
to{left: 200px;top: 100px;}
}
</style>
</head>
<body>
<div id="con" onclick="myfunction()">
</div>
<script type="text/javascript">
var x = document.getElementById('con'); //设置全局变量x
function myfunction()
{
x.style.WebkitAnimation="myanimation 2s linear 3"; // Chrome, Safari 和 Opera 浏览器兼容问题
x.style.animation="myanimation 2s linear 3";
}
x.addEventListener("animationstart",myanimationStart);
x.addEventListener("animationiteration",myanimationiterration);
x.addEventListener("animationend",myanimationend);
x.addEventListener("webkitAnimationStart",myanimationStart); // Chrome, Safari 和 Opera 浏览器兼容问题
x.addEventListener("webkitAnimationIteration",myanimationiterration); // Chrome, Safari 和 Opera 浏览器兼容问题
x.addEventListener("webkitAnimationEnd",myanimationend); // Chrome, Safari 和 Opera 浏览器兼容问题
function myanimationStart() //动画开始运行时触发,通过addEventListener事件监听到运行函数myanimationStart
{
this.innerHTML="动画正在运行";
x.style.background="pink";
}
function myanimationiterration() //动画再次运行触发,同样也是通过事件监听
{
this.innerHTML="动画重新运行";
x.style.background="greenyellow";
}
function myanimationend() //动画运行结束时触发,同样也是通过事件监听事件
{ this.innerHTML="动画运行结束";
x.style.background="blue";
x.style.width=200+"px";
x.style.height=200+"px";
window.alert("动画运行结束");
}
</script>
</body>
</html>
效果展示: