您现在的位置是:网站首页> 编程资料编程资料
CSS3动画之利用requestAnimationFrame触发重新播放功能_css3_CSS_网页制作_
2021-09-10
889人已围观
简介 这篇文章主要介绍了利用requestAnimationFrame重新播放(触发)CSS3动画,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
css动画
css3中引入了animation模块,自此css动画进入了我们的视野。css动画名符其实,会写css样式就可以创作动画,对一些不怎么会JS的设计师也是比较包容的。但也正因为如此,当你需要重新播放或者说手动触发动画时,css的局限性就突显出来了,毕竟它不是一门编程语言。像这种在页面中创建一个按钮,点击按钮时开始播放一段动画这种活交给JS才是最合适的。
原理和思路
重新播放css动画,我们只需要将CSS动画效果 删除 ,然后再 重新加上 css动画效果即可。那么如何让浏览器理解我们的意图呢,今天的主角 requestAnimationFrame ,这个任务就交给它来完成。 requestAnimationFrame 会告诉浏览器--你需要执行一个动画,并要求在下一次重绘前调用指定的回调函数更新动画。也就是 requestAnimationFrame 需要传入一个回调函数作为参数,这个函数会在浏览器下一次重绘之前执行。 这个机制可以用花费最短的时间让浏览器理解我们需要重新播放动画的意图。
当然 requestAnimationFrame 只是其中的一步,我们还需要再加上个小技巧-- 分离动画样式 .
关键代码
效果:

:grin:为了生动形象一些,特地找了个兔子的CSS动画。css类 .rabbit 中只定义了兔子的外观,没有定义动画相关的信息。我们把动画相关的信息都放到了 .animated 类中。
handleAnimate 函数是我们的关键部分:
- $rabbit.classList.remove('animated') 的作用是每次点击按钮的时候删除动画效果。
- requestAnimationFrame 这里用到了两次,而且是嵌套着使用,为何要如此呢?其实也好理解,有个细节--删除Dom元素的class类后,只有在样式重新计算后才会生效,也就是要等到下一次重绘。而 requestAnimationFrame 注册的回调函数是下一次重绘前,所以我们需要调用两次,相当于在中间插入了一个空隙专门用来让删除动画效果生效,然后紧接着下一次重绘重新触发动画。
总结
javascript 相对css更适合用来控制动画,动画的触发机制和浏览器渲染机制相关。
参考
总结
以上所述是小编给大家介绍的CSS3动画之利用requestAnimationFrame触发重新播放功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
相关内容
- CSS背景图片实现自适应、全屏、填充与拉伸的方法_CSS教程_CSS_网页制作_
- CSS背景图片固定宽高比自适应调整的实现方法_CSS教程_CSS_网页制作_
- CSS3实现类似翻书效果的过渡动画的示例代码_css3_CSS_网页制作_
- css transition animation的使用(内含贝赛尔曲线详解)_CSS教程_CSS_网页制作_
- CSS中@support实现渐进式网页设计实例代码_CSS教程_CSS_网页制作_
- 解决网站防挂IFRAME木马的原理_CSS教程_CSS_网页制作_
- 从腾讯网站首页改版学到的几点体会心得_CSS教程_CSS_网页制作_
- Web前端开发的Firefox插件_浏览器兼容教程_CSS_网页制作_
- WEB标准教程:P标签的应用_Web标准教程_CSS_网页制作_
- 看看网页高手怎么理解Web标准_Web标准教程_CSS_网页制作_
