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代码
Dec 15 Javascript
6个DIV 135或246间隔一秒轮番显示效果
Jul 24 Javascript
jQuery控制iFrame(实例代码)
Nov 19 Javascript
js 3秒后跳转页面的实现代码
Mar 10 Javascript
什么是cookie?js手动创建和存储cookie
May 27 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
微信小程序 wx.request(object) API详解及实例代码
Sep 30 Javascript
React Navigation 使用中遇到的问题小结
May 08 Javascript
vue使用swiper实现中间大两边小的轮播图效果
Nov 24 Javascript
vue 如何使用递归组件
Oct 23 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调用API接口实现天气查询功能的示例
2017/09/21 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
JS异步函数队列功能实例分析
2017/11/28 Javascript
详解微信UnionID作用
2019/05/15 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
万年牢教学反思
2014/02/15 职场文书
财务简历的自我评价
2014/03/05 职场文书
大足石刻导游词
2015/02/02 职场文书
英语演讲开场白
2015/05/29 职场文书
高中运动会前导词
2015/07/20 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS