css3动画事件—webkitAnimationEnd与计时器time事件


Posted in HTML / CSS onJanuary 31, 2013

用css3的animation完成一个动画,当只有这个动画完成时才执行令一个事件,比如让动画保持在终止的状态或其他一些事件。我们该怎么办呢。
第一种方法
用计时器,设定一个和动画时长一样的time,过time事件去执行这个函数。
setTimeout(function(){ },time);
第二种方法
当-webkit-animation动画结束时有一个webkitAnimationEnd事件,只要监听这个事件就可以了。
例子:

复制代码
代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="@my_programmer">
<title>webkitAnimationEnd</title>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="format-detection" content="telephone=no"/>
<style type="text/css">
#div{
width:200px;
height:200px;
background:#f60;
margin:100px auto;
-webkit-transition: all ease 1s;
}
.change{
-webkit-animation: transform 1s 2 ease;
}
@-webkit-keyframes transform {
% { -webkit-transform: scale(1)}
% { -webkit-transform: scale(2)}
% { -webkit-transform: scale(0.5)}
% { -webkit-transform: scale(1)}
}
</style>
</head>
<body>
<div id="div"></div>
<script type="text/javascript">
var tt = document.querySelector('#div');
tt.addEventListener("click", function(){
this.className = 'change';
}, false);
tt.addEventListener("webkitAnimationEnd", function(){ //动画结束时事件
this.className = this.className.replace('change', ' ');
console.log(2);
}, false);
</script>
</body>
</html>

拓展
1、-webkit-animation动画其实有三个事件:
开始事件 webkitAnimationStart
结束事件 webkitAnimationEnd
重复运动事件 webkitAnimationIteration
你可以在上个例子中测试一下这两个事件
复制代码
代码如下:

tt.addEventListener("webkitAnimationStart", function(){ //动画开始时事件
console.log(1);//动画开始时,控制台输出1
}, false);
tt.addEventListener("webkitAnimationIteration", function(){ //动画重复运动时的事件
console.log(3);//第一遍动作完成时,控制台输出3
}, false);

2、css3的过渡属性transition,在动画结束时,也存在结束的事件:webkitTransitionEnd;
注意:transition,也仅仅有这一个事件。
HTML / CSS 相关文章推荐
CSS3 特效范例整理
Aug 22 HTML / CSS
CSS3盒子模型详解
Apr 24 HTML / CSS
css3发光搜索表单分享
Apr 11 HTML / CSS
浅谈CSS3 动画卡顿解决方案
Jan 02 HTML / CSS
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
Jan 06 HTML / CSS
css3媒体查询中device-width和width的区别详解
Mar 27 HTML / CSS
Html5页面中的返回实现的方法
Feb 26 HTML / CSS
HTML5视频播放插件 video.js介绍
Sep 29 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
Nov 22 HTML / CSS
canvas实现图片镜像翻转的2种方式
Jul 22 HTML / CSS
为什么你写的height:100%不起作用
May 10 HTML / CSS
Li list-style-image 图片垂直居中实现方法
May 21 HTML / CSS
CSS3 制作绽放的莲花采用效果叠加实现
Jan 31 #HTML / CSS
CSS3 制作旋转的大风车(充满童年回忆)
Jan 30 #HTML / CSS
css3简单练习实现遨游浏览器logo的绘制
Jan 30 #HTML / CSS
IE滤镜与CSS3效果(详细整理分享)
Jan 25 #HTML / CSS
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
Jan 23 #HTML / CSS
纯css3无js实现的Android Logo(有简单动画)
Jan 21 #HTML / CSS
定义css设备类型-Media Queries图表简介及使用方法
Jan 21 #HTML / CSS
You might like
无线电广播的开始
2002/01/30 无线电
php使用curl访问https示例分享
2014/01/17 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
python多进程操作实例
2014/11/21 Python
python实现备份目录的方法
2015/08/03 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
Python实现弹球小游戏
2020/08/01 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
晚会邀请函范文
2014/01/24 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
2014年体育部工作总结
2014/11/13 职场文书
公司慰问信范文
2015/03/23 职场文书
小学运动会通讯稿
2015/07/18 职场文书
宾馆客房管理制度
2015/08/06 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
KVM基础命令详解
2022/04/30 Servers