监听animation动画事件
2016-06-02 15:57
447 查看
当你需要在某个动画开始或者结束时,去触发某一个事件,那么这时候可以用到监听animation事件方法;
具体如下:
1、-webkit-animation动画其实有三个事件:
开始事件 webkitAnimationStart
结束事件 webkitAnimationEnd
重复运动事件 webkitAnimationIteration
2、css3的过渡属性transition,在动画结束时,也存在结束的事件:webkitTransitionEnd;
注意:transition,也仅仅有这一个事件。
废话不多说,直接上代码:
html代码:
<div id="div"></div>
css代码:
#div{
width:60px;
height:60px;
border-radius:30px;
background:#eee;
margin:100px auto;
-webkit-transition: all ease 1s;
-moz-transition: all ease 1s;
-ms-transition: all ease 1s;
-o-transition: all ease 1s;
transition: all ease 1s;
}
.change{
-webkit-animation: transform_ani 1s 2 ease;
-moz-animation: transform_ani 1s 2 ease;
-ms-animation: transform_ani 1s 2 ease;
-o-animation: transform_ani 1s 2 ease;
animation: transform_ani 1s 2 ease;
}
@-webkit-keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
@-moz-keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
@-ms-keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
@-o-keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
@keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
js代码:
var dd = document.querySelector('#div');
dd.addEventListener("click", clickEvent, false);
//监听transition动画结束方法
dd.addEventListener("webkitTransitionEnd", overTran, false);
dd.addEventListener("mozTransitionEnd", overTran, false);
dd.addEventListener("MSTransitionEnd", overTran, false);
dd.addEventListener("otransitionend", overTran, false);
dd.addEventListener("transitionend", overTran, false);
//监听animation动画开始方法
dd.addEventListener("webkitAnimationStart", startAni, false);
dd.addEventListener("mozAnimationStart", startAni, false);
dd.addEventListener("MSAnimationStart", startAni, false);
dd.addEventListener("oanimationstart", startAni, false);
dd.addEventListener("animationstart", startAni, false);
//监听animation动画结束方法
dd.addEventListener("webkitAnimationEnd", overAni, false);
dd.addEventListener("mozAnimationEnd", overAni, false);
dd.addEventListener("MSAnimationEnd", overAni, false);
dd.addEventListener("oanimationend", overAni, false);
dd.addEventListener("animationend", overAni, false);
//监听animation重复运动方法
dd.addEventListener("webkitAnimationIteration", chongfuAni, false);
dd.addEventListener("mozAnimationIteration", chongfuAni, false);
dd.addEventListener("MSAnimationIteration", chongfuAni, false);
dd.addEventListener("oanimationiteration", chongfuAni, false);
dd.addEventListener("animationiteration", chongfuAni, false);
function clickEvent(){
dd.className = 'change';
console.log('click');
}
function overTran(){
console.log('TransitionEnd');
}
function startAni(){
console.log('AnimationStart');
}
function overAni(){
dd.className = dd.className.replace('change', ' ');
console.log('AnimationEnd');
}
function chongfuAni(){
console.log('AnimationIteration');
}
运行如下图:
![](http://img.blog.csdn.net/20160602155719925?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
备注:虽然不常用,但是需要去理解掌握!多动手!!
具体如下:
1、-webkit-animation动画其实有三个事件:
开始事件 webkitAnimationStart
结束事件 webkitAnimationEnd
重复运动事件 webkitAnimationIteration
2、css3的过渡属性transition,在动画结束时,也存在结束的事件:webkitTransitionEnd;
注意:transition,也仅仅有这一个事件。
废话不多说,直接上代码:
html代码:
<div id="div"></div>
css代码:
#div{
width:60px;
height:60px;
border-radius:30px;
background:#eee;
margin:100px auto;
-webkit-transition: all ease 1s;
-moz-transition: all ease 1s;
-ms-transition: all ease 1s;
-o-transition: all ease 1s;
transition: all ease 1s;
}
.change{
-webkit-animation: transform_ani 1s 2 ease;
-moz-animation: transform_ani 1s 2 ease;
-ms-animation: transform_ani 1s 2 ease;
-o-animation: transform_ani 1s 2 ease;
animation: transform_ani 1s 2 ease;
}
@-webkit-keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
@-moz-keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
@-ms-keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
@-o-keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
@keyframes transform_ani {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
}
js代码:
var dd = document.querySelector('#div');
dd.addEventListener("click", clickEvent, false);
//监听transition动画结束方法
dd.addEventListener("webkitTransitionEnd", overTran, false);
dd.addEventListener("mozTransitionEnd", overTran, false);
dd.addEventListener("MSTransitionEnd", overTran, false);
dd.addEventListener("otransitionend", overTran, false);
dd.addEventListener("transitionend", overTran, false);
//监听animation动画开始方法
dd.addEventListener("webkitAnimationStart", startAni, false);
dd.addEventListener("mozAnimationStart", startAni, false);
dd.addEventListener("MSAnimationStart", startAni, false);
dd.addEventListener("oanimationstart", startAni, false);
dd.addEventListener("animationstart", startAni, false);
//监听animation动画结束方法
dd.addEventListener("webkitAnimationEnd", overAni, false);
dd.addEventListener("mozAnimationEnd", overAni, false);
dd.addEventListener("MSAnimationEnd", overAni, false);
dd.addEventListener("oanimationend", overAni, false);
dd.addEventListener("animationend", overAni, false);
//监听animation重复运动方法
dd.addEventListener("webkitAnimationIteration", chongfuAni, false);
dd.addEventListener("mozAnimationIteration", chongfuAni, false);
dd.addEventListener("MSAnimationIteration", chongfuAni, false);
dd.addEventListener("oanimationiteration", chongfuAni, false);
dd.addEventListener("animationiteration", chongfuAni, false);
function clickEvent(){
dd.className = 'change';
console.log('click');
}
function overTran(){
console.log('TransitionEnd');
}
function startAni(){
console.log('AnimationStart');
}
function overAni(){
dd.className = dd.className.replace('change', ' ');
console.log('AnimationEnd');
}
function chongfuAni(){
console.log('AnimationIteration');
}
运行如下图:
备注:虽然不常用,但是需要去理解掌握!多动手!!
相关文章推荐
- Ubuntu系统搭建Discus论坛
- Gradle Build速度加快终极方法
- [leetcode] 212. Word Search II
- 数据库 连接池、缓冲池(定义、原理)
- Zabbix 自定义Item Not Supported 解决方案
- QTableWidget的用法总结
- Nifi InvokeHttp processor
- 自定义比较函数在windows下导致异常的问题
- a标签href跳转---传值---禁止单引号
- 解决android sdk 无法更新
- 采购申请的评估价格的来源
- 04-树6 Complete Binary Search Tree
- Android进程和线程
- juni测试
- 文章标题
- HTTP POST GET 本质区别详解
- Linux下网络流量实时监控工具 大全
- 垂直居中的几大方法
- 第十四、十五周新总结
- java技术小白的入门