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.比如 ...
随机推荐
- oracle中trim,ltrim,rtrim函数用法
该函数共有两种作用:第一种,即大家都比较熟悉的去除空格.例子:--TRIM去除指定字符的前后空格SQL> SELECT TRIM(' dd df ') FROM dual;TRIM('DDDF' ...
- java第一天
今天完成的事情: [主线] 1.什么是接口??? 接口(interface)是类与类之间的一种约定,一般而言,实现某个接口,意味着该类必须实现接口中的所有方法. 2.接口的特性. ...
- html4,xhtml,html5发展历史
SGML SGML 是一种很强大但很复杂的标记语言,HTML.XML 就是从中衍生出来的.SGML 的例子如下:<QUOTE TYPE="example"> typic ...
- zookeeper 安装及一些问题
一.mac brew安装 http://blog.itpub.net/27099995/viewspace-1394831/ 二.部署多台 参考链接:http://blog.itpub.net/270 ...
- JS巧计__轮播
横向轮播 function lxfScroll(main,titleli,alt,speed){ var lxfscroll = $(main); var ul = lxfscroll.find(&q ...
- Java多线程同步 synchronized 关键字的使用
代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A, ...
- Linux查找
如果你想在当前目录下 查找"hello,world!"字符串,可以这样: grep -rn "hello,world!" * * : 表示当前目录所有文件,也可 ...
- PHP data
- Python中Paramiko协程方式详解
什么是协程 协程我们可以看做是一种用户空间的线程. 操作系统对齐存在一无所知,需要用户自己去调度. 比如说进程,线程操作系统都是知道它们存在的.协程的话是用户空间的线程,操作系统是不知道的. 为什么要 ...
- ORACLE迁移votedisk,spfile以及OCRfile的方法
在安装GUI时,创建了第一块ASM磁盘,命名为DATA1,上面存放了spfile文件,ocrfile文件,并且作为了vote盘.感觉名字和实际不符,容易搞混,所以想删除这个磁盘,直接删除会报错: OR ...