JavaScript探测CSS动画是否已经完成的方法


Posted in Javascript onAugust 30, 2016

不??律洗?耄?/p>

WN:(function(){
      var el = $('<fakeelement>'),
        transition="transition",
        transitionEnd,
        animEvent={'start':null,'iteration':null,'end':null},
        vendorPrefix;
        
      transition = transition.charAt(0).toUpperCase() + transition.substr(1);
      
      vendorPrefix=(function(){//现在的opera也是webkit
        var i=0, vendor=["Moz", "Webkit", "Khtml", "O", "ms"];
        while (i < vendor.length) {
          if (typeof el.css(vendor[i] + transition) === "string"){
            return vendor[i];
          }
          i++;
        }
        return false;
      })();
      
      transitionEnd=(function(){
        var transEndEventNames = {
          WebkitTransition : 'webkitTransitionEnd',
          MozTransition  : 'transitionend',
          OTransition   : 'oTransitionEnd otransitionend',
          transition    : 'transitionend'
        }
        for(var name in transEndEventNames){
          if(typeof el.css(name) === "string"){
            return transEndEventNames[name];
          }
        }
      })();
      
      animEvent.end=(function(){
        var animEndEventNames = {
          WebkitAnimation : 'webkitAnimationEnd',
          animation   : 'animationend'
        }
        for(var name in animEndEventNames){
          if(typeof el.css(name) === "string"){
            return animEndEventNames[name];
          }
        }
      })();
      
      animEvent.iteration=(function(){
        var animIterationEventNames = {
          WebkitAnimation : 'webkitAnimationIteration',
          animation   : 'animationiteration'
        }
        for(var name in animIterationEventNames){
          if(typeof el.css(name) === "string"){
            return animIterationEventNames[name];
          }
        }
      })();
      
      animEvent.start=(function(){
        var animStartEventNames = {
          WebkitAnimation : 'webkitAnimationStart',
          animation   : 'animationstart'
        }
        for(var name in animStartEventNames){
          if(typeof el.css(name) === "string"){
            return animStartEventNames[name];
          }
        }
      })();
      
      return {
        called:false,
        addTranEvent:function(elem,fn,duration){
          var self = this;
          var fncallback = function(){
            if(!self.called){
              fn();
              self.called = true;
            }
          };
          function hand(){  
            elem.on(transitionEnd,function(){
              //elem.unbind(transitionEnd,arguments.callee);
              fncallback();
            });
          }
          setTimeout(hand,duration);
        },
        addAnimEvent:function(elem,name,fn){
          elem.on(animEvent[name],fn);
        },      
        removeAnimEvent:function(elem,name,fn){
          elem.unbind(animEvent[name],fn);
        },
        setStyleAttribute:function(elem,val){
          if(Object.prototype.toString.call(val) === "[object Object]"){
            for(var name in val){
              if(/^transition|animation|transform/.test(name)){
                var styleName=name.charAt(0).toUpperCase() + name.substr(1);
                elem.css(vendorPrefix+styleName,val[name]);
              }else{
                elem.css(name,val[name]);
              }
            }
          }
        }
      };
    })(),

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS实现浏览器菜单命令
Sep 05 Javascript
jquery 插件学习(三)
Aug 06 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
Aug 16 Javascript
node.js中的console.timeEnd方法使用说明
Dec 09 Javascript
JS实现超简单的仿QQ折叠菜单效果
Sep 21 Javascript
jQuery复制节点用法示例(clone方法)
Sep 08 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
Jan 18 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
Apr 28 Javascript
vue实现引入本地json的方法分析
Jul 12 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
基于JavaScript实现鼠标箭头移动图片跟着移动
Aug 30 #Javascript
很棒的js Tab选项卡切换效果
Aug 30 #Javascript
js改变透明度实现轮播图的算法
Aug 24 #Javascript
标准的js无缝滚动效果
Aug 30 #Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 #Javascript
js制作网站首页图片轮播特效代码
Aug 30 #Javascript
js实现简单的碰壁反弹效果
Aug 30 #Javascript
You might like
学习php分页代码实例
2013/10/24 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
JS location几个方法小姐
2008/07/09 Javascript
PHP守护进程实例
2015/03/06 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
详解Django中Request对象的相关用法
2015/07/17 Python
python的socket编程入门
2018/01/29 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python、Matlab求定积分的实现
2019/11/20 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
详解Python 中的容器 collections
2020/08/17 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
军训心得体会
2013/12/31 职场文书
高三家长寄语
2014/04/03 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
岳麓书院导游词
2015/02/03 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
四十九个javascript小知识实用技巧
2021/11/20 Javascript