html动画用css还是js,详解前端工程师常考面试题-关于 JS 动画和 css3 动画的差异性...

本文对比了JavaScript和CSS3在创建动画时的优缺点。JavaScript适合复杂的动画效果,提供强大的控制力,但可能引起浏览器主线程阻塞;CSS3则在浏览器优化下运行更高效,适合简单的动画,但控制性较弱,且代码可能冗长。对于简单的状态切换,CSS3是更好的选择,而复杂的UI动画推荐使用JavaScript。
摘要由CSDN通过智能技术生成

01Js:

首先,js动画是逐帧动画,几乎可以完成您想要的任何动画形式。 但因为内容不同会增加生产负担,并且资源占用相对较大。 但是它的优点也很明显:非常适合执行非常精致的动画,例如3D效果,人物或动物的急转弯等。 但是,如果帧速率太低,则从一个帧到另一个帧的过渡很可能是不自然且不一致的。

620bca6a1c6cfadae8063a6a4ffaf9f9.png

缺点:

JavaScript在浏览器的主线程中运行,还有其他JavaScript脚本、样式计算、布局、绘图任务需要在主线程中运行。干扰它们可能导致线程阻塞,从而导致帧丢失。

代码复杂度高于CSS动画。

优点:

JavaScript动画控制能力很强,可以控制动画在播放过程中:开始、暂停、播放、终止、取消都可以完成。

动画效果比CSS3动画更丰富,一些动画效果,如曲线运动、冲击闪烁、视差滚动等效果,只有JavaScript动画才能完成。

CSS3有兼容性问题,而JS大多数时候没有兼容性问题。

6021bf0bb3f3e1d2a8bdc5e30828692f.png

例如:

Visit W3School!

function mouseOver()

{

document.b1.src ="/i/eg_mouse.jpg"

}

function mouseOut()

{

document.b1.src ="/i/eg_mouse2.jpg"

}

aac5a7733d6b7b03e309d82162befdb2.png

02Css3:

动画是使元素从一种样式逐渐变化为另一种样式的效果。

当实现一些简单的滑动,翻转和其他特殊效果时,Css3非常方便,但是当你想要实现一些很酷的效果时,它的操作通常比js操作具有更多的冗余。

在css3中制作动画时,浏览器可以进行一些优化,这将比js使用更少的cpu资源,但是效果足够流畅。

优点:

(1)浏览器可以优化动画。

(2)代码相对简单,并且性能调整方向是固定的。

(3)对于帧速率性能较差的低版本浏览器,CSS3可以自然降级,而JS需要编写其他代码。

96593d85ab0e0d75ec8738fec68b57b8.png

缺点:

1.运行过程的控制较弱,不可能附加事件绑定回调函数。 CSS动画只能暂停,无法在动画中找到特定的时间点,不能中途反转动画,无法更改时间比例,无法添加回调函数或将播放事件绑定到特定位置,并且没有进度报告

2。 代码冗长。 如果您想使用CSS来实现稍微复杂一点的动画,那么CSS代码最终将变得非常繁琐。

例如:

div

{

width:100px;

height:100px;

background:red;

animation:myfirst 5s;

-moz-animation:myfirst 5s; /* Firefox */

-webkit-animation:myfirst 5s; /* Safari and Chrome */

-o-animation:myfirst 5s; /* Opera */

}

@keyframes myfirst

{

0% {background:red;}

25% {background:yellow;}

50% {background:blue;}

100% {background:green;}

}

总结:

如果动画只是简单的状态切换,不需要中间过程控制,在这种情况下,css动画是优选方案。

如果你在设计很复杂的富客户端界面或者在开发一个有着复杂UI状态的 APP。那么你应该使用js动画,这样你的动画可以保持高效,并且你的工作流也更可控。

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值