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 相关文章推荐
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
克隆javascript对象的三个方法小结
Jan 12 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
Apr 02 Javascript
js读写(删除)Cookie实例详解
Apr 17 Javascript
Form表单按回车自动提交表单的实现方法
Nov 18 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
Nov 26 Javascript
微信小程序 欢迎页面的制作(源码下载)
Jan 09 Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
vue轮播图插件vue-concise-slider的使用
Mar 13 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
Mar 24 Javascript
了解JavaScript函数中的默认参数
May 30 Javascript
weui上传多图片,压缩,base64编码的示例代码
Jun 22 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下实现农历日历的代码
2007/03/07 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python中实现字符串翻转的方法
2018/07/11 Python
python3判断url链接是否为404的方法
2018/08/10 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
python3将变量输入的简单实例
2020/08/19 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
.net面试题
2016/09/17 面试题
电厂厂长岗位职责
2014/01/02 职场文书
学生生病请假条范文
2014/02/16 职场文书
排查整治工作方案
2014/06/09 职场文书
年终工作总结范文2014
2014/11/27 职场文书
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android