热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:如何用JavaScript捕获CSS3的动画事件

本文由编程笔记#小编为大家整理,主要介绍了如何用JavaScript捕获CSS3的动画事件相关的知识,希望对你有一定的参考价值。CSS3动画执行起来平滑且快速,但不像
本文由编程笔记#小编为大家整理,主要介绍了如何用Javascript捕获CSS3的动画事件相关的知识,希望对你有一定的参考价值。



CSS3动画执行起来平滑且快速,但不像Javascript动画,你可以一帧一帧控制。幸运的是,你可以在任何一个元素上使用事件处理来决定动画的状态。同时它支持连续播放不同动画这种细粒度的控制。

来看下这个简单的CSS3动画:









  1. #anim.enable





  2. {





  3.  -webkit-animation: flash 1s ease 3;





  4.  -moz-animation: flash 1s ease 3;





  5.  -ms-animation: flash 1s ease 3;





  6.  -o-animation: flash 1s ease 3;





  7.  animation: flash 1s ease 3;





  8. }









  9. /* animation */





  10. @-webkit-keyframes flash {





  11.  50% { opacity: 0; }





  12. }









  13. @-moz-keyframes flash {





  14.  50% { opacity: 0; }





  15. }









  16. @-ms-keyframes flash {





  17.  50% { opacity: 0; }





  18. }









  19. @-o-keyframes flash {





  20.  50% { opacity: 0; }





  21. }









  22. @keyframes flash {





  23.  50% { opacity: 0; }





  24. }





enable类应用于ID为 anim 的元素时,名为flash的动画将运行三次。每次运行持续一秒钟,在此过程中,元素会在其中淡出淡入。

动画运行时会触发三种类型的事件:

animationstart









  1. var anim = document.getElementById("anim");





  2. anim.addEventListener("animationstart", AnimationListener, false);





动画第一次启动时,animationstart 事件触发。

animationiteration









  1. `anim.addEventListener("animationiteration", AnimationListener, false);`





animationinteration事件会在每一次新的动画执行过程中被触发,即除了第一次之外的每一个迭代过程。

animationend









  1. `anim.addEventListener("animationend", AnimationListener, false);`





animationend事件会在动画结束时被触发。


浏览器兼容性

在撰写本文时,Firefox,Chrome,Safari,Opera和IE10支持CSS3动画和相关联的事件处理程序。此外,Opera,IE10和webkit浏览器使用前缀,并在一些情况下做出很棒的支持...

W3C 标准中 FirefoxwebkitOperaIE10animationstart animationstart webkitAnimationStart oanimationstart MSAnimationStart animationiteration animationiteration webkitAnimationIteration oanimationiteration MSAnimationIteration animationend animationend webkitAnimationEnd oanimationendMSAnimationEnd 等事件

前缀最简单的方法是使用自定义函数为所有前缀和非前缀名称调用addEventListener:









  1. var pfx = ["webkit", "moz", "MS", "o", ""];





  2. function PrefixedEvent(element, type, callback) {





  3.  for (var p = 0; p code>





现在可以使用一行简单代码分配跨浏览器事件处理程序:









  1. // animation listener events





  2. PrefixedEvent(anim, "AnimationStart", AnimationListener);





  3. PrefixedEvent(anim, "AnimationIteration", AnimationListener);





  4. PrefixedEvent(anim, "AnimationEnd", AnimationListener);






事件对象

在上面的代码中,每当动画事件发生时,都会调用AnimationListener函数。事件对象作为单个参数传递。除了标准的属性和方法外,还提供:



  • animationName:CSS3动画名称(即flash


  • elapsedTime:动画开始后以秒为单位的时间。


因此,我们可以检测flash动画结束的时间,例如









  1. if (e.animationName == "flash" &&





  2.    e.type.toLowerCase().indexOf("animationend") >= 0) {





  3.    ...





  4. }





这段代码就可以,例如,可以删除现有class或以特定顺序应用另一个CSS3动画。


更多来自本作者的内容

在Javascript演示中查看CSS3动画事件

演示页面显示一个按钮。当它被点击时,“enable”类被切换开始flash动画。当动画事件触发时,状态显示在控制台中。当动画结束时,“enable”类被删除,因此可以再次单击该按钮。

如果您在任何有趣的项目中使用动画事件捕获,可以告诉我们。











































往期精选文章





小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。



推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了正则表达式python相关的知识,希望对你有一定的参考价值。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • 前端提高篇(七十):SVG基本使用、基本样式、路径path
    SVG是使用XML来描述二维图形和绘图程序的语言。SVG遵循的是xml的规范,与html5的使用有所区别SVG绘制出来的是矢量图,放大之后不会失真官方文 ... [详细]
  • 博主使用代理IP来自于网上免费提供高匿IP的这个网站用到的库frombs4importBeautifulSoupimportrandomimporturllib.re ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • html结构 ... [详细]
  • Python爬取豆瓣数据实现过程解析
    这篇文章主要介绍了Python爬取豆瓣数据实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值, ... [详细]
  • 文章目录简介HTTP请求过程HTTP状态码含义HTTP头部信息Cookie状态管理HTTP请求方式简介HTTP协议(超文本传输协议)是用于从WWW服务 ... [详细]
  • 目录爬虫06scrapy框架1.scrapy概述安装2.基本使用3.全栈数据的爬取4.五大核心组件对象5.适当提升scrapy爬取数据的效率6.请求传参爬虫06scrapy框架1. ... [详细]
author-avatar
哈罗xeh_406
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有