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 相关文章推荐
IE Firefox 使用自定义标签的区别
Oct 15 Javascript
基于jQuery的树控件实现代码(asp.net+json)
Jul 11 Javascript
addEventListener 的用法示例介绍
May 07 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
Aug 24 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 Javascript
js动态引入的四种方法
May 05 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
May 08 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
May 14 Javascript
使用JS实现动态时钟
Mar 12 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脚本的10个技巧(8)
2006/10/09 PHP
PHP 数组实例说明
2008/08/18 PHP
用javascript实现画板的代码
2007/09/05 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
python画图常规设置方式
2020/03/05 Python
python连接mysql有哪些方法
2020/06/24 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
总经理岗位职责
2013/11/09 职场文书
学籍证明模板
2014/11/21 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书