千家信息网

css3动画和js动画有哪些区别

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家分享的是有关css3动画和js动画有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。区别:1、js动画的控制能力比css3动画强;2、js动画的效果比c
千家信息网最后更新 2025年01月23日css3动画和js动画有哪些区别

这篇文章给大家分享的是有关css3动画和js动画有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

区别:1、js动画的控制能力比css3动画强;2、js动画的效果比css3动画丰富;3、js动画大多数情况下没有兼容性问题,而css3动画有兼容性问题;4、js动画的复杂度高于css3动画。

本教程操作环境:windows7系统、CSS3&&javascript1.8.5版、Dell G3电脑。

JS动画

优点:
  • js动画控制能力强,可以在动画博凡过程中对动画进行精细控制,开始、暂停、终止、取消都是可以做到的

  • 动画效果比css3动画丰富,比如曲线运动,冲击闪烁,视差滚动效果,只有js动画才能完成

  • js动画大多数情况下没有兼容性问题,而css3动画有兼容性问题

缺点
  • js动画的复杂度高于css3

  • js在动画浏览器的主线程中执行,而主线程还有其他javaScript脚本,样式计算、布局、绘制任务等,对其干扰可能出现阻塞从而出现丢帧的情况

  • js动画往往需要频繁操作DOM的css属性来实现视觉上的动画效果,这个时候浏览器要不停地执行重绘和重排,这对于性能的消耗是很大的,尤其是在分配给浏览器的内存没那么宽裕的移动端。

CSS3动画

优点:

1、部分情况下浏览器可以对动画进行优化,为什么说部分情况下呢,因为是有条件的:

  • 在Chromium基础上的浏览器中

  • 同时CSS动画不触发layout或paint,在CSS动画或JS动画触发了paint或layout时,需要main thread进行Layer树的重计算,这时CSS动画或JS动画都会阻塞后续操作。

    在主线程中,维护了一棵Layer树(LayerTreeHost),管理了TiledLayer,在compositor thread,维护了同样一颗LayerTreeHostImpl,管理了LayerImpl,这两棵树的内容是拷贝关系。因此可以彼此不干扰,当Javascript在main thread操作LayerTreeHost的同时,compositor thread可以用LayerTreeHostImpl做渲染。当Javascript繁忙导致主线程卡住时,合成到屏幕的过程也是流畅的。
    为了实现防假死,鼠标键盘消息会被首先分发到compositor thread,然后再到main thread。这样,当main thread繁忙时,compositor thread还是能够响应一部分消息,例如,鼠标滚动时,加入main thread繁忙,compositor thread也会处理滚动消息,滚动已经被提交的页面部分(未被提交的部分将被刷白)。

2、部分效果可以强制使用硬件加速 (通过 GPU 来提高动画性能)

缺点
  • 运行进程控制较弱,css3动画只能在某些场景下控制动画的暂停与继续,不能在特定的位置添加添加回调函数

  • 代码冗长。想用 CSS 实现稍微复杂一点动画,最后CSS代码都会变得非常笨重。

css动画比js动画流畅的前提

  • js在执行一些复杂的任务

  • css动画比较少或者不触发pain和layout,即重绘和重排,例如通过改变如下属性生成的css动画

    • backface-visibility

    • opacity

    • perspective (设置元素视图)

    • perspective-origin

    • transfrom

  • 部分属性能够启动3D加速和GPU硬件加速,例如使用transform的translateZ进行3D变换时

  • 在Chromium基础上的浏览器中,这个貌似是内核做了优化,当css动画知识改变transfrom和opacity时,整个CSS动画得以在compositor thread完成(而JS动画则会在main thread执行),这样css动画渲染不会影响主线程。

感谢各位的阅读!关于"css3动画和js动画有哪些区别"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

动画 浏览器 部分 浏览 情况 效果 线程 控制 复杂 兼容性 问题 繁忙 内容 属性 消息 流畅 代码 任务 优点 同时 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 芯片架构和软件开发语言的关系 数据库查询所有人的工龄 酷狗直播用什么软件开发的 服务器上存储磁盘怎么添加 虚拟化服务器如何改变性能 批量删除服务器文件 光猫路由器指定连接服务器 海宁卡卡网络技术有限公司 扬州自动量化交易软件开发公司 网络安全法解读手册 高档服务器包装哪家好 华为软件开发电脑 剑三双线服务器 美国网络安全综合计划 如何建立会计培训数据库 罗马帝国下载软件开发 多媒体网络技术和电商哪个好 湖南pdu服务器专用电源价格表 丹东新零售报单软件开发公司 c 如何连接数据库 服务器添加域名 软件开发要求电脑什么水平 数据库附加后变为只读 vs的数据库怎么建立 英雄杀进不去提示服务器错误 交警网络安全设计方案 gp数据库下载 浙江企业软件开发咨询热线 江西省网络安全知识竞赛时间 苏州网络营销软件开发推荐咨询
0