css3中transition和animation的回调处理
弱鸡最近在准备面试,网上找了一些题,发现一些基础题也完全答不好(┬_┬)看来还是要再接再励啊w(゚Д゚)w
言归正传,今天的主题是CSS3中的动画回调处理,这里动画执行完毕后触发的事件是transitionend事件和animationend事件,如果我们需要在动画执行完毕后,
进行一些其他操作,只需要给这两个事件添加相应的回调函数即可.
如果你css基础不够,请看这里: 张鑫大大关于css3动画的简介
如果你向深入研究这个问题,请看这里:蜗牛大大讲transition事件处理
值得注意的是当transition动画修改了元素的N个属性值时,就会触发N次transitionend事件,因此需要定义一个handleTransitionEndfn函数来处理多次触发的问题,
代码如下:
var handleTransitionEndfn=function(ele,fn,duration){
var flag=0;
//每次触发transitionend事件都会执行callback()
var callback=function(){
fn();
flag=1;
}
ele.addEventListener("webkitTransitionEnd", function(){
callback();
//防止winphone不能触发事件
setTimeout(callback(), duration);
}, false)
}
下面是transition回调处理的示例:
html结构:
<div class="trans_box"></div>
css样式:
<style>
*{
margin:0;
padding:0;
}
.trans_box{
width: 100px;
height: 100px;
margin:100px;
background-color:orange;
-webkit-transition:all 1s ease-out;
}
</style>
js代码:
<script type="text/javascript">
window.onload=function(){
var trans_box=document.querySelector(".trans_box");
trans_box.onclick=function(){
trans_box.style.backgroundColor="pink";
trans_box.style.webkitTransform="translateX(200px) scale(2) rotate(360deg)";
}
var handleTransitionEndfn=function(ele,fn,duration){
var flag=0;
// 当transition事件完成后需要执行的函数;
var callback=function(){
if(!flag){
fn();
flag=1
}
};
ele.addEventListener("webkitTransitionEnd", function(){
callback();
// 考虑兼容winphone
setTimeout(callback, duration);
},false)
};
function transitionEndfn(){
alert("transition事件成功加载!")
}
handleTransitionEndfn(trans_box,transitionEndfn,"2s");
}
</script>
下面animation回调处理示例:
html结构同上下
css样式如下:
<style>
*{
padding:0;
margin:0;
}
.anim_box{
width: 100px;
height: 100px;
background-color: lightgreen;
margin:100px;
transition:all 2s ease;
}
@keyframes move{
0%{
opacity: 1;
}
50%{
opacity: 0.8;
-webkit-transform:rotate(360deg);
}
100%{
background-color: pink;
opacity: 0.3;
}
}
</style>
js代码:
<script>
var anim_box=document.querySelector(".anim_box");
anim_box.onclick=function(){
anim_box.style.webkitAnimation="move 2s";
}
anim_box.addEventListener("webkitAnimationEnd", function(){
alert("animation事件加载成功!")
}, false)
</script>
css3中transition和animation的回调处理的更多相关文章
- 弄清 CSS3 的 transition 和 animation
弄清 CSS3 的 transition 和 animation transition transition 属性是 transition-property, transition-duration, ...
- CSS3动画 transition和animation的用法和区别
transition和animation都是CSS3新增的特性,使用时需要加内核 浏览器 内核名称 W3C IE -ms- Chrome/Safari -webkit- Firefoc - ...
- 2018年1月17日总结 css3里transition 和animation 区别
transition 和animation两个CSS3属性经常被用到实际项目中,想把它整理出来. 1.先介绍transition >>>>> a. 在做项目中经常会遇见 ...
- css3中transition属性详解
css3中通过transition属性可以实现一些简单的动画过渡效果~ 1.语法 transition: property duration timing-function delay; transi ...
- Vue中transition和animation的使用
一:二者的对比 1.动画循环就用animation.在animation中有一个animation-iteration-count属性可以定义循环次数.transition是执行一次以后就不会执行,但 ...
- css3,transition,animation两种动画实现区别
我们为页面设置动画时,往往会用到transition还有animation以及transfrom属性或者用到js. 其实通常情况下,对于使用js我们更加倾向于使用css来设置动画. transfrom ...
- css3中transition和display的坑
不知道大家做css3动画的时候遇到过这种情景没? 用opacity实现淡入淡出的效果.噢!good!一切正常 给个栗子: <!DOCTYPE html> <html> < ...
- css3中trastion,transform,animation基本的了解
毕业答辩一耽误就是一个月的时间,感觉自己浪费好多时间,而且学习劲头都没有以前的好,学习是个漫长艰苦的事情,也出现了好多问题,希望自己有则改之,无则加冕,曾国藩曾说过:悔者,所以守其缺而禾取求全也.虽然 ...
- css3中什么时候用transition什么时候用animation实现动画
在css3中transition和animation都可以实现动画效果,但是我们什么时候用transition,什么时候用animation. 当有事件触发动画的时候我们就用transition.比如 ...
随机推荐
- HTML5 Canvas一些常用的操作
粗略的Canvas API 1. context var context = canvas.getContext('2d'); 2.Canvas state context.save();//将当前状 ...
- HTML5 十大新特性(九)——Web Storage
H5的webStorage技术一共提供了两个对象:window.sessionStorage和window.localStorage. 一.window.sessionStorage--会话级存储 存 ...
- grunt不是内部或外部命令错误处理
如题, npm install -g grunt-cli发现grunt命令却不可用, 其实是环境变量问题,但是网上很多给出的方法其实是不准确的, 正确方法,可以通过npm root -g查看路径,之后 ...
- 20个人艰不拆的事实:知道真相的我眼泪掉下来 T.T
20个人艰不拆的事实:知道真相的我眼泪掉下来 T.T 原文链接http://www.u148.net/article/113612.html 来源:ruoning WuMo是丹麦画家Mikael Wu ...
- java.lang.Class<T> -- 反射机制
1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...
- angular遇到问题
一.一个js中只有一个angunlar.module,但可以有多个controller,从而控制多个不同的作用域,每个作用域都有独立的$scope.不同作用域之间又有$rootScope这个桥梁 二. ...
- web api+递归树型结构
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...
- [HTML/HTML5]2 CSS样式表设置
2.1 在HTML文件中设置样式表 当前HTML"规则"指出:HTML仅用于标识页面的内容,应该使用样式表来定义内容的呈现样式.这不仅使Web页面对于所有用户(无论采用什么浏览器 ...
- OpenBSD内核之引导PBR
OpenBSD引导的第二部PBR,也是活动分区的一个扇区的代码,由第一步的MBR加载到0x7C00处,manpage里详细的讲解了过程和大致实现 biosboot(8) (http://man.ope ...
- 建站随手记:installation python virtualenv mezzanine -1
aliyun的网络访问有时会有问题,pip有问题的时候使用豆瓣源 pip install $apptoinstall$ -i http://pypi.douban.com/simple ------- ...