弱鸡最近在准备面试,网上找了一些题,发现一些基础题也完全答不好(┬_┬)看来还是要再接再励啊w(゚Д゚)w

言归正传,今天的主题是CSS3中的动画回调处理,这里动画执行完毕后触发的事件是transitionend事件和animationend事件,如果我们需要在动画执行完毕后,

进行一些其他操作,只需要给这两个事件添加相应的回调函数即可.

如果你css基础不够,请看这里: 张鑫大大关于css3动画的简介

如果你向深入研究这个问题,请看这里:蜗牛大大讲transition事件处理

值得注意的是当transition动画修改了元素的N个属性值时,就会触发N次transitionend事件,因此需要定义一个handleTransitionEndfn函数来处理多次触发的问题,

代码如下:

  1. var handleTransitionEndfn=function(ele,fn,duration){
  2. var flag=0;
  3. //每次触发transitionend事件都会执行callback()
  4. var callback=function(){
  5. fn();
  6. flag=1;
  7. }
  8. ele.addEventListener("webkitTransitionEnd", function(){
  9. callback();
  10. //防止winphone不能触发事件
  11. setTimeout(callback(), duration);
  12. }, false)
  13. }

下面是transition回调处理的示例:

html结构:

  1. <div class="trans_box"></div>

css样式:

  1. <style>
  2. *{
  3. margin:0;
  4. padding:0;
  5. }
  6. .trans_box{
  7. width: 100px;
  8. height: 100px;
  9. margin:100px;
  10. background-color:orange;
  11. -webkit-transition:all 1s ease-out;
  12. }
  13. </style>

js代码:

  1. <script type="text/javascript">
  2. window.onload=function(){
  3. var trans_box=document.querySelector(".trans_box");
  4. trans_box.onclick=function(){
  5. trans_box.style.backgroundColor="pink";
  6. trans_box.style.webkitTransform="translateX(200px) scale(2) rotate(360deg)";
  7. }
  8. var handleTransitionEndfn=function(ele,fn,duration){
  9. var flag=0;
  10. // 当transition事件完成后需要执行的函数;
  11. var callback=function(){
  12. if(!flag){
  13. fn();
  14. flag=1
  15. }
  16. };
  17. ele.addEventListener("webkitTransitionEnd", function(){
  18. callback();
  19. // 考虑兼容winphone
  20. setTimeout(callback, duration);
  21. },false)
  22. };
  23. function transitionEndfn(){
  24. alert("transition事件成功加载!")
  25. }
  26. handleTransitionEndfn(trans_box,transitionEndfn,"2s");
  27. }
  28. </script>

下面animation回调处理示例:

html结构同上下

css样式如下:

  1. <style>
  2. *{
  3. padding:0;
  4. margin:0;
  5. }
  6. .anim_box{
  7. width: 100px;
  8. height: 100px;
  9. background-color: lightgreen;
  10. margin:100px;
  11. transition:all 2s ease;
  12. }
  13. @keyframes move{
  14. 0%{
  15. opacity: 1;
  16. }
  17. 50%{
  18. opacity: 0.8;
  19. -webkit-transform:rotate(360deg);
  20. }
  21. 100%{
  22. background-color: pink;
  23. opacity: 0.3;
  24. }
  25. }
  26. </style>

js代码:

  1. <script>
  2. var anim_box=document.querySelector(".anim_box");
  3. anim_box.onclick=function(){
  4. anim_box.style.webkitAnimation="move 2s";
  5. }
  6. anim_box.addEventListener("webkitAnimationEnd", function(){
  7. alert("animation事件加载成功!")
  8. }, false)
  9. </script>

css3中transition和animation的回调处理的更多相关文章

  1. 弄清 CSS3 的 transition 和 animation

    弄清 CSS3 的 transition 和 animation transition transition 属性是 transition-property, transition-duration, ...

  2. CSS3动画 transition和animation的用法和区别

    transition和animation都是CSS3新增的特性,使用时需要加内核 浏览器 内核名称 W3C   IE  -ms-  Chrome/Safari -webkit-   Firefoc - ...

  3. 2018年1月17日总结 css3里transition 和animation 区别

    transition 和animation两个CSS3属性经常被用到实际项目中,想把它整理出来. 1.先介绍transition >>>>>  a. 在做项目中经常会遇见 ...

  4. css3中transition属性详解

    css3中通过transition属性可以实现一些简单的动画过渡效果~ 1.语法 transition: property duration timing-function delay; transi ...

  5. Vue中transition和animation的使用

    一:二者的对比 1.动画循环就用animation.在animation中有一个animation-iteration-count属性可以定义循环次数.transition是执行一次以后就不会执行,但 ...

  6. css3,transition,animation两种动画实现区别

    我们为页面设置动画时,往往会用到transition还有animation以及transfrom属性或者用到js. 其实通常情况下,对于使用js我们更加倾向于使用css来设置动画. transfrom ...

  7. css3中transition和display的坑

    不知道大家做css3动画的时候遇到过这种情景没? 用opacity实现淡入淡出的效果.噢!good!一切正常 给个栗子: <!DOCTYPE html> <html> < ...

  8. css3中trastion,transform,animation基本的了解

    毕业答辩一耽误就是一个月的时间,感觉自己浪费好多时间,而且学习劲头都没有以前的好,学习是个漫长艰苦的事情,也出现了好多问题,希望自己有则改之,无则加冕,曾国藩曾说过:悔者,所以守其缺而禾取求全也.虽然 ...

  9. css3中什么时候用transition什么时候用animation实现动画

    在css3中transition和animation都可以实现动画效果,但是我们什么时候用transition,什么时候用animation. 当有事件触发动画的时候我们就用transition.比如 ...

随机推荐

  1. PNG的使用技巧

    Png是图像文件存储格式,在网页设计中已经不是一个陌生的名词,在前端开发中经常使用到它,如常用CSS 雪碧图.而Png的使用不仅仅如此,Png有多少种格式,有哪些特点,PC端中常用的Png格式是哪些, ...

  2. 基于Eclipse+Cordova的Android Hybrid应用开发环境搭建

    环境说明 操作系统:Windows 7 64位 Eclipse版本:4.5.2 Release(eclipse-jee-mars-2) JDK版本:1.8 搭建步骤 1.从http://www.ecl ...

  3. Libpci库的调用

    这几天发现在Redhat AS6.5 X86_64下用outl(index, 0xcf8)和inl(0xcfc)下读取PCIe配置空间是系统有时性的会hang, 于是去寻找解决方案,首先想到的是用/d ...

  4. RedHat下apache\ftp\mysql 4.0 的安装方法

    RedHat下安装这三个服务的方法大同小异 Apache服务: 找到Apache安装包: rpm -ivh httpd-2.0.40-21.i386.rpm 等待安装完成即可 检查安装结果: rpm ...

  5. c#基础3

    Console.WriteLine("屏幕显示的内容"); Console.Write("屏幕显示的内容"); 两者区别是:Console.WriteLine( ...

  6. 20169212《Linux内核原理与分析》第八周作业

    理论 task_struct的结构关系 非常庞大的数据结构,400多行代码.包括对进程链表的管理,控制台,文件系统描述,文件描述符,内存管理描述,信号描述等. 创建一个新进程在内核中的执行过程 for ...

  7. kaggle数据挖掘竞赛初步--Titanic<派生属性&维归约>

    完整代码: https://github.com/cindycindyhi/kaggle-Titanic 特征工程系列: Titanic系列之原始数据分析和数据处理 Titanic系列之数据变换 Ti ...

  8. js中转移符

    "<a href='javascript:;' onclick='javascript:changeChannelRuleStatus(\"" + options. ...

  9. UI UIBUTTON

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  10. mongodb-replset安装

    节点分配 10.110.18.89 10.110.18.90 10.110.18.94 配置文件 systemLog: destination: file path: "/data/mong ...