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处理VBArray的函数使用说明
May 11 Javascript
基于JQuery的多标签实现代码
Sep 19 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
jQuery自动完成插件completer附源码下载
Jan 04 Javascript
原生js编写autoComplete插件
Apr 13 Javascript
基于jQuery的ajax方法封装
Jul 14 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
Aug 05 Javascript
javascript Function函数理解与实战
Dec 01 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 Javascript
浅探express路由和中间件的实现
Sep 30 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
Nov 12 Javascript
JS实现无限轮播无倒退效果
Sep 21 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中iconv函数使用方法
2008/05/24 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
javascript html 静态页面传参数
2009/04/10 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python3解释器知识点总结
2019/02/19 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
人民教师的自我评价分享
2014/02/21 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
红色影片观后感
2015/06/18 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
MySQL开启事务的方式
2021/06/26 MySQL
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL
python数据处理之Pandas类型转换
2022/04/28 Python