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 相关文章推荐
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
Oct 24 Javascript
javascript判断iphone/android手机横竖屏模式的函数
Dec 20 Javascript
javascript中的绑定与解绑函数应用示例
Jun 24 Javascript
js replace 与replaceall实例用法详解
Aug 03 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
Bootstrap表单布局
Jul 19 Javascript
AngularJS实现controller控制器间共享数据的方法示例
Oct 30 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
Koa 使用小技巧(小结)
Oct 22 Javascript
为react组件库添加typescript类型提示的方法
Jun 15 Javascript
vue 使用lodash实现对象数组深拷贝操作
Sep 10 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 CURL获取邮箱地址的详解
2013/06/03 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
PHP children()函数讲解
2019/02/03 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
Python unittest 简单实现参数化的方法
2018/11/30 Python
Python数据集切分实例
2018/12/08 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python字典的遍历3种方法详解
2019/08/10 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
python与idea的集成的实现
2020/11/20 Python
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
校园报刊亭的创业计划书
2014/01/02 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
财政局个人年终总结
2015/03/03 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js