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 相关文章推荐
Ajax搜索结果页面下方的分页按钮的生成
Apr 05 Javascript
利用js 进行输入框自动匹配字符的小例子
Jun 29 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
javascript产生随机数方法汇总
Jan 25 Javascript
JS获取url参数、主域名的方法实例分析
Aug 03 Javascript
微信小程序 教程之引用
Oct 18 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
基于JavaScript实现的折半查找算法示例
Apr 14 Javascript
浅谈Vue数据绑定的原理
Jan 08 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
Jun 21 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
Aug 29 Javascript
基于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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP生成不重复标识符的方法
2014/11/21 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
javascript间隔刷新的简单实例
2013/11/14 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
TypeScript入门-接口
2017/03/30 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python计算三维矢量幅度的方法
2015/06/15 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
师范大学毕业自我鉴定
2013/11/21 职场文书
饲料采购员岗位职责
2013/12/19 职场文书
工程建设实施方案
2014/03/14 职场文书
励志演讲稿200字
2014/08/21 职场文书
出纳工作检讨书
2014/10/18 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python