CSS过渡 && bootstrap transition
来源:互联网 发布:java笔试多选题 编辑:程序博客网 时间:2024/05/17 08:01
bootstrap插件自带的动画都是用CSS3的过渡实现的,transition动画相比jQuery自带的动画有许多优点,这些动画比较平滑,使用起来比较方便和灵活,并且对资源的消耗比较少,但是也有缺点,比如动画完成时间等等。既然bootstrap插件采用了transition来进行动画效果修改,那么这样的方法还是很值得去学习一下的。
CSS transition
CSS transition是CSS样式在一定时间内从一个状态平滑地过渡到另外一个状态,我们可以使用伪类来很容易地实现这样的CSS transition。
.testRect { height: 200px; width: 200px; background-color: #444; transition: background-color 1s linear; }.testRect:hover { background-color: #36f;}
上面的代码可以让一个类为testRect的元素的背景色在鼠标移动到该元素上1s内按照线性变化从灰色变成蓝色。
但是如果仅仅是通过伪类实现,那么这个CSS transition也太过鸡肋了,毕竟CSS的伪类能实现的功能太少,如果我们使用JavaScript为某个DOM元素添加一个类,这个类中包含动画效果,那么在添加到这个类名的时候,就会执行这个动画效果了。例如:
.testRect { height: 200px; width: 200px; background-color: #444; transition: background-color 1s linear; }.testRect.blue { background-color: #36f;}
可以设置这个div的点击函数为colorChange,点击这个div矩形,就可以得到1秒之内颜色的平滑过渡。
function colorChange(){ var className = $('.testRect').attr('class').split(' '); if (!className[1]) $('.testRect').addClass('blue'); else $('.testRect').removeClass('blue');}
TransitionEnd
transitionEnd事件是在CSS过渡动画结束之后自动触发的一个事件,这个事件在bootstrap插件中起到了很大的作用,这个事件的回调函数可以完成对发生动画的DOM元素进行清理的工作。
transitionEnd事件在不同浏览器中有着不同的事件名称,所以在使用之前尽量先检测浏览器的支持情况。下面是bootstrap中测试浏览器支持的transitionEnd事件的事件名。
function transitionEnd(){ var bs = document.createElement('bootstrap'); var transitionEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' }; for (var name in transitionEndEventNames){ if(bs.style[name] !== undefined) return {end:transitionEndEventNames[name],}; } return false; //IE8以下不支持transition,所以不会有transitionEnd事件}
如果浏览器支持CSS transition,并且已经得到了transitionEnd事件的事件名,就可以添加对该事件的监听函数。来监听动画何时结束。
$(document).ready(function(){ $(document).on(transitionEnd().end,function(){ event.preventDefault(); alert('动画完成啦~~'); });});
结合之前判定浏览器支持的事件名,就可以完成对于CSS过渡完成事件的监听。
emulateTransitionEnd
在bootstrap插件中,除了transitionEnd事件,插件还在jQuery的插件库中添加一个名为emulateTransitionEnd的方法,刚开始对这个方法并看不太懂(bootstrap源码的风格看的人好心酸啊喂),后来查阅了一些资料才大概搞清楚这个方法的作用。先上源码
$.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this $(this).one('bsTransitionEnd', function () { called = true }) //在这里检测transitionEnd事件是否被自动触发,回调函数是否调用 //如果调用了则设置called变量为true var callback = function () { if (!called) $($el).trigger($.support.transition.end) } //如果没有自动触发transitionEnd事件以及回调,那么就再用trigger方法触发 //一个duration时间后的回调函数,保证transitionEnd的回调肯定会执行 setTimeout(callback, duration) return this }
bootstrap插件新增的这个方法,是由于transitionEnd事件有时候并不能被正常触发,所以需要手动在transitionEnd事件没有触发的时候自动触发一个事件,并且给这个事件绑定上与transitionEnd事件一样的回调函数,保证这个回调函数的执行。
这就是bootstrap transition函数的几个主要部分,总的来说这种动画风格非常的简约,适合作为官方网站的动画效果的,棒棒的。
- CSS过渡 && bootstrap transition
- css过渡transition
- CSS过渡效果:transition属性
- CSS transition的过渡效果
- 深入理解CSS过渡transition
- 深入理解CSS过渡transition
- 深入理解CSS过渡transition
- Bootstrap 过渡效果Transition-模态框(Modal)
- 【CSS基础】css3 transition过渡属性<四>
- CSS属性之过渡(transition)属性
- 过渡 transition
- CSS的过渡效果及动画效果:transition&animation
- CSS镂空图片transition过渡初加载背景色块
- Css transition属性(添加动态过渡样式)
- CSS3 过渡之transition
- CSS3之过渡Transition
- CSS3之过渡Transition
- CSS3----过渡transition
- javaIO详解
- EBS Form开发 弹性域定义中的参数<三> .
- 然后对当前快照"关机",再重新启动快照的操作系统就可以了
- 语音验证码api 手机接听验证码
- 基于live555实现实时视频监控
- CSS过渡 && bootstrap transition
- 浅析动态内存分配栈与堆
- apache commons collections CollectionUtils工具类简单使用
- 索引的利弊与如何判定,是否需要索引
- WCDMA中RL失步是如何定义的?
- 如何高效的使用Xcode
- vlc的应用之六:简单的视频点播系统(B/S)的实现
- VxWorks信号、中断处理与定时机制
- KPN