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 相关文章推荐
javaScript - 如何引入js代码
Mar 09 Javascript
jquery常用操作小结
Jul 21 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
Node.js实用代码段之获取Buffer对象字节长度
Mar 17 Javascript
jquery显示隐藏元素的实现代码
May 19 Javascript
详解vue express启动数据服务
Jul 05 Javascript
JavaScript函数绑定用法实例分析
Nov 14 Javascript
解决vue-cli创建项目的loader问题
Mar 13 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
Sep 30 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
详解如何使用微信小程序云函数发送短信验证码
Mar 13 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 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
php入门小知识
2008/03/24 PHP
linux php mysql数据库备份实现代码
2009/03/10 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
php类中private属性继承问题分析
2012/11/01 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
再谈javascript面向对象编程
2012/03/18 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
Python的形参和实参使用方式
2019/12/24 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
python中字典增加和删除使用方法
2020/09/30 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
求职信标题怎么写
2014/05/26 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers