目录
JS动画
优点:
缺点
CSS3动画
css动画比js动画流畅的前提
总结
首页 web前端 前端问答 css3动画和js动画的区别是什么

css3动画和js动画的区别是什么

Dec 15, 2021 am 11:32 AM
css动画

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

css3动画和js动画的区别是什么

本教程操作环境: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动画渲染不会影响主线程。

总结

回归到日常开发中,当有一个动画的需求时,首要考虑的肯定是能不能尽可能实现的问题。如果在CSS动画和JS动画都能实现的基础上才会要去根据上面总结的权衡哪个性能更好的问题。总之,并不一定css动画就比js动画好,还得看具体的需求和业务场景。

学习视频分享:css视频教程javascript学习教程

以上是css3动画和js动画的区别是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

CSS动画指南:手把手教你制作闪电特效 CSS动画指南:手把手教你制作闪电特效 Oct 20, 2023 pm 03:55 PM

CSS动画指南:手把手教你制作闪电特效引言:CSS动画是现代网页设计中不可或缺的一部分。它可以为网页带来生动的效果和交互性,并提升用户体验。在本指南中,我们将详细介绍如何使用CSS来制作闪电特效,以及提供具体的代码示例。一、创建HTML结构:首先,我们需要创建一个HTML结构来容纳我们的闪电特效。我们可以使用一个<div>元素来包裹闪电特效,并为

CSS动画教程:手把手教你实现翻页特效 CSS动画教程:手把手教你实现翻页特效 Oct 24, 2023 am 09:30 AM

CSS动画教程:手把手教你实现翻页特效,需要具体代码示例CSS动画是现代网站设计中必不可少的一部分。它可以为网页增添生动感,吸引用户的注意力,并且提高用户体验。其中一种常见的CSS动画效果就是翻页特效。在这篇教程中,我将带领大家一步一步实现这个引人注目的效果,并提供具体的代码示例。首先,我们需要创建一个基本的HTML结构。代码如下:<!DOCTYPE

利用CSS实现鼠标悬停时的抖动特效的技巧和方法 利用CSS实现鼠标悬停时的抖动特效的技巧和方法 Oct 21, 2023 am 08:37 AM

利用CSS实现鼠标悬停时的抖动特效的技巧和方法鼠标悬停时的抖动特效可以为网页添加一些动感和趣味性,吸引用户的注意力。在这篇文章中,我们将介绍一些利用CSS实现鼠标悬停抖动特效的技巧和方法,并提供具体的代码示例。抖动的原理在CSS中,我们可以使用关键帧动画(keyframes)和transform属性来实现抖动效果。关键帧动画允许我们定义一个动画序列,通过在不

CSS动画教程:手把手教你实现脉冲特效 CSS动画教程:手把手教你实现脉冲特效 Oct 21, 2023 pm 12:09 PM

CSS动画教程:手把手教你实现脉冲特效,需要具体代码示例引言:CSS动画是网页设计中常用的一种效果,它可以为网页增添活力和视觉吸引力。本篇文章将带您深入了解如何利用CSS实现脉冲特效,并提供具体的代码示例教您一步步完成。一、了解脉冲特效脉冲特效是一种循环变化的动画效果,通常用在按钮、图标或其他元素上,使其呈现出一种跳动、闪烁的效果。通过CSS的动画属性和关键

利用CSS实现图片展示特效的技巧和方法 利用CSS实现图片展示特效的技巧和方法 Oct 24, 2023 pm 12:52 PM

利用CSS实现图片展示特效的技巧和方法无论是网页设计还是应用开发,图片展示都是非常常见的需求。为了提升用户体验,我们可以利用CSS来实现一些炫酷的图片展示特效。本文将介绍几种常用的技巧和方法,并提供相应的代码示例,帮助读者快速上手。一、图片缩放特效缩放鼠标悬浮效果当鼠标悬浮在图片上时,通过缩放效果可以增加交互性。代码示例如下:.image-zoom{

CSS动画指南:手把手教你制作眨眼特效 CSS动画指南:手把手教你制作眨眼特效 Oct 20, 2023 pm 03:24 PM

CSS动画指南:手把手教你制作眨眼特效眨眼特效是一种常见的CSS动画效果,通过简单的代码实现,可以带来生动独特的效果。本文将为你提供一份手把手的指南,教你如何使用CSS制作眨眼特效,并提供具体的代码示例。创建HTML结构首先,我们需要创建一个HTML结构,用于展示眨眼特效。代码如下:<!DOCTYPEhtml><html>&

CSS动画教程:手把手教你实现流水流光特效 CSS动画教程:手把手教你实现流水流光特效 Oct 21, 2023 am 08:52 AM

CSS动画教程:手把手教你实现流水流光特效,需要具体代码示例前言:CSS动画是网页设计中常用的技术,它使得网页更生动有趣,吸引用户的注意力。在这篇教程中,我们将会学习如何使用CSS实现一个流水流光的特效,并提供具体的代码示例。让我们开始吧!第一步:HTML结构首先,我们需要创建一个基本的HTML结构。在文档的<body>标签中添加一个<di

CSS动画教程:手把手教你实现淡入淡出效果 CSS动画教程:手把手教你实现淡入淡出效果 Oct 18, 2023 am 09:22 AM

CSS动画教程:手把手教你实现淡入淡出效果,包含具体代码示例在网页设计和开发中,动画效果可以让页面更加生动和吸引人。而CSS动画是一种简单而且强大的方式来实现这种效果。本篇文章将手把手教你如何使用CSS来实现淡入淡出效果,并提供具体的代码示例供参考。一、淡入效果淡入效果是指元素从透明度为0逐渐变为透明度为1的效果。以下是实现淡入效果的步骤和代码示例:步骤1:

See all articles