webkitAnimationEnd事件与webkitTransitionEnd事件

转自:http://www.html5online.com.cn/articles/2013012201.html#

在CSS 3中,可以通过使用keyframe样式属性与animation样式属性实现animation动画,使用transition样式属性实现transition动画。

在WebKit引擎的浏览器(包括Chrome浏览器与Safari浏览器)中,存在与这两种动画功能相关的webkitAnimationEnd事件与webkitTransitionEnd事件,本文对这两个事件进行详细介绍。本文中不对CSS 3中的animation动画功能以及transition动画功能进行详细介绍,如果想更多了解这方面的知识,可以参阅笔者所著《HTML 5与CSS 3权威指南》,或点击此处报名参加我们所办的面向企业(可赴企业现场培训)或面向个人的培训班,为了保证学员真正掌握所学知识,参加培训后一年内,凡学员上机时遇到所学课程内的各种问题,可在本站“技术论坛”栏目内提出后由本站专门回答。

在WebKit引擎的浏览器中,当CSS 3的animation动画执行结束时,触发webkitAnimationEnd事件,当CSS 3的transition动画执行结束时,触发webkitTransitionEnd事件。可以通过如下所示的代码捕捉这两个事件。

//捕捉webkitAnimationEnd事件
element.addEventListener(‘webkitAnimationEnd‘, end, false);
//捕捉webkitTransitionEnd事件
element.addEventListener(‘webkitTransitionEnd‘, end, false); 

webkitAnimationEnd事件

在WebKit引擎的浏览器中,当CSS 3的animation动画执行结束时,触发webkitAnimationEnd事件。在CSS 3中,使用如下所示的样式代码定义animation动画。

.element{
    -webkit-animation: anime 0.5s ease-in;
}
@-webkit-keyframes anime {
    0% {
        -webkit-transform: translate(0,0);
        opacity: 0.1;
    }
    50% {
        -webkit-transform: translate(100px,0);
        opacity: 0.5;
    }
    100% {
        -webkit-transform: translate(0,0);
        opacity: 1;
    }
}

上面这段代码执行功能为在0.5秒内将元素向右移动100像素后将其返回。我们可以在这个动画结束时触发的webkitAnimationEnd事件中执行一些代码,例如显示动画已执行结束,以及动画的执行次数。

动画执行次数:1

webkitAnimationEnd事件触发次数:1

执行animation动画

webkitTransitionEnd事件

在WebKit引擎的浏览器中,当CSS 3的transition动画执行结束时,触发webkitTransitionEnd事件。在CSS 3中,使用如下所示的样式代码定义transition动画。

.element{ -webkit-transition: all 0.25s ease-in; }
.element.on{ -webkit-transform: translate(100px,0); }

上面这段代码执行功能同样为在0.5秒内将元素向右移动100像素后将其返回。我们可以在这个动画结束时触发的webkitTransitionEnd事件中执行一些代码,例如显示动画已执行结束,以及动画的执行次数。

动画执行次数:1

webkitTransitionEnd事件触发次数:2

执行transition动画

从执行结果中我们可以看出,在每个动画的执行过程中,webkitTransitionEnd事件的触发次数比webkitAnimationEnd事件的触发次数多一次,这是因为webkitAnimationEnd事件只在元素向右移动,然后向左返回之后触发一次,而webkitTransitionEnd事件将在元素向右移动之后触发一次,在元素向左返回之后再触发一次。

接下来,我们为元素多指定一个opacity(透明度)样式属性,代码如下所示:

.element.on{
    -webkit-transform: translate(100px,0);
    opacity: 0.5;
}

然后将元素的transition样式属性值指定为all,然后观察执行一次动画时webkitTransitionEnd事件的触发次数。

执行transition动画

从执行结果中我们可以看出,如果多使用一个样式属性,在每个动画执行的过程中webkitTransitionEnd事件的触发次数将多增加两次。也就是说webkitTransitionEnd事件将在元素的每个样式属性值发生改变之后触发一次。

时间: 2024-11-06 07:30:41

webkitAnimationEnd事件与webkitTransitionEnd事件的相关文章

微信小程序-双击长按longtap事件与tap事件冲突的解决办法

对于微信事件,不多说,自己看文档https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html?t=20161122 效果 首先,注意一下微信小程序事件触发顺序     单击 touchstart → touchend → tap 双击 touchstart → touchend → tap → touchstart → touchend → tap 长按 touchstart → longtap → touche

JavaScript事件代理和事件委托

一.概述: 那什么叫事件委托呢?它还有一个名字叫事件代理,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件.那这是什么意思呢?网上的各位大牛们讲事件委托基本上都用了同一个例子,就是取快递来解释这个现象,我仔细揣摩了一下,这个例子还真是恰当,我就不去想别的例子来解释了,借花献佛,我摘过来,大家认真领会一下事件委托到底是一个什么原理: 有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托给前台

基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件

这次为程序添加鼠标事件和键盘事件 当检测到鼠标事件和键盘事件的信息时,捕获其信息并将信息传送到需要信息的对象处理.为此,需要一个可以分派信息的对象,这个对象能够正确的把信息交到正确的对象. 实现思路: 要实现以上的功能,需要几个对象: 事件分派器:EventDispatcher,负责将 BaseEvent 分派给 EventListener 对象 事件监听器:EventListener,这只是一个接口类,接受 BaseEvent 的对象,真正的处理在它的子类中实现 事件:BaseEvent,储存

js之事件冒泡和事件捕获详细介绍

(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div -> body -> html -> document Mozilla 1.0: div -> body -> html -> document -> window (2)捕获型事件(event capturing):事件从最不精确的对象(document 对象)开

js绑定事件和解绑事件

在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性 attachEvent方法  只支持IE678,不兼容其他浏览器 addEventListener方法   兼容火狐谷歌,不兼容IE8及以下 addEventListener方法 div.addEventListener('click',fn); div.addEventListener('click',fn2); function fn(){ console.log("春

由微服务,领域事件,分布式事件谈“业务分析三维度理论”的实践

今天读了在微服务中使用领域事件 这篇文章,通过分布式,订单系统直接将事件推送给订阅此事件的账户系统,然后账户系统再处理,整个系统设计很好. 不过,我觉得所谓微服务的分布式事件,从抽象概念上还是弱了点,不如Actor模型,应该将事件抽象成消息,消息包括命令,事件,或者其它无关紧要的东西.每一个Actor接收场景中的消息,或者产生消息,或者转发消息:消息如何处理,取决于Actor的内置规则. 所以,真实世界的模型是有很多场景,在某个场景中有些Actor,Actor相互交互,发生和改变什么东西.场景中

js事件冒泡和事件委托

js所谓的事件冒泡就是子级元素的某个事件被触发,它的上级元素的该事件也被递归执行 html: 1 <ul class="clearfix" data-type="cityPick"> 2 <li class="active_sort_opts" data-id="0">全部</li> 3 <li data-id="88">纽约</li> 4 <

从click事件理解DOM事件流

事件流是用来解释页面上的不同元素接受一个事件的顺序,首先要明确两点: 1.一个事件的影响元素可能不止一个(同心圆理论),但目标元素只有一个. 2.如果这些元素都绑定了相同名称的事件函数,我们怎么知道这些函数的运行顺序?于是有了事件流的概念(事件捕捉,事件冒泡) 举个例子: <div id="outer"> <p id="inner">Click me!</p> </div> 为了看起来方便,先无视CSS样式,那么蓝色的

jQuery事件之鼠标事件

鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的.   (1):click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发.        $('p').click(function(){                alert('click function is running !');              });    (2):dbclick事件:dbclick事件在用户完成迅速连续的两次点击之后触发,双击的速度取决于操作系统的设置.一般双击事件