bootstrap之transition
来源:互联网 发布:好伙伴物流软件 编辑:程序博客网 时间:2024/05/19 12:18
一、前言
最近一段时间研究了下bootstrap源码,现在开始总结,先从transition(动画)开始。
二、源码
/* ======================================================================== * Bootstrap: transition.js v3.3.7(动画过渡) * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // ============================================================ // 判断浏览器是否支持哪种transitionEnd,如果不支持则返回false function transitionEnd() { var el = document.createElement('bootstrap') var transEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' } for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return { end: transEndEventNames[name] } } } return false // explicit for ie8 ( ._.) } // http://blog.alexmaccaw.com/css-transitions $.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this $(this).one('bsTransitionEnd', function () { called = true }) // 如果没有监听到了bsTransitionEnd,那么采用定时器触发事件 var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this } // 初始化 $(function () { $.support.transition = transitionEnd() if (!$.support.transition) return // 用于传入事件类型,来自定义事件。这样就能自己添加事件$el.one('bsTransitionEnd', function() {}),而不用$el.one($.support.transition.end, function() {}) $.event.special.bsTransitionEnd = { bindType: $.support.transition.end, delegateType: $.support.transition.end, handle: function (e) { if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } } }) }(jQuery);
三、源码分析
1、transitionEnd
遍历各浏览器兼容的transitionEnd,判断哪个是当前浏览器兼容,并返回。
2、emulateTransitionEnd
当监听到bsTransitionEnd设置called标志量为true,并设置定时器,如果bsTransitionEnd没有被触发,那么采用定时器来触发transitionEnd事件。
3、event.special.bsTransitionEnd
采用jQuery处理特殊的事件,将兼容的transitionEnd委托为bsTransitionEnd。
阅读全文
0 0
- bootstrap之transition
- CSS过渡 && bootstrap transition
- State与Transition之Transition
- Bootstrap插件transition源码的学习
- Bootstrap 过渡效果Transition-模态框(Modal)
- CSS3 过渡之transition
- CSS3之过渡Transition
- Android Animation之transition
- Android Animation之transition
- CSS3之过渡Transition
- iOS之Transition动画
- CSS3之过渡Transition
- CSS3之过渡Transition
- android 转场之transition
- CSS3之过渡Transition
- css3学习之:transition
- CSS之transition
- CSS3之animation、transition
- GameEntity(一) —— CampType
- SSH整合 xml版 和注解版
- [USACO17OPEN]Where's Bessie? 贝西在哪呢
- CatBoost: A machine learning library to handle categorical (CAT) data automatically MACHINE LEARNING
- 这是别人的添加监听事件的方法
- bootstrap之transition
- Badboy自动化测试工具6 Variable Setter
- React中constructor(){}
- 闵神的数论
- 类的概述·main方法中参数String[] argv的意义讲解
- 主成分分析(PCA)
- python基础系列教程——python中的字符串和正则表达式全解
- CentOS 7安装Python3.5
- Qt:自定义进度条