CSS3与JavaScript:有何优势?

7
似乎在HTML5/CSS3中,越来越倾向于使用纯CSS动画、效果、导航等。这是因为C/Java等开发人员“错误”地使用JavaScript(在语义上),还是CSS比JavaScript更有优势?如果是这样,为什么CSS会更好?它更快吗?
此外,从语义上讲,CSS只应用于样式/定位,这样做是否合适?所以,CSS是否开始超出其设计范围?

1
有一个更大的推动力量朝着仅使用CSS动画的方向发展,这主要是因为C/Java等开发人员倾向于“不正确地”使用JavaScript。 <-- 这听起来不是很荒谬吗? - Wesley Murch
1
自从JavaScript诞生以来,很多人一直在“错误地”(甚至是完全错误地)使用它,但这几乎没有引起任何事情的发生。 - Guffa
2
CSS动画和滤镜应该并且通常是GPU加速的。所以,是的,它们比JavaScript中的模拟更快。 - katspaugh
4个回答

14
这纯粹是因为C/Java等开发人员倾向于“不正确”地使用JavaScript(我猜主要是在语义上),吗?
不,你差不多错了。人们使用JavaScript的主要原因是他们想支持尽可能多的浏览器。CSS3是一种新技术,只有最新和最棒的浏览器能够理解,而JavaScript已经存在几十年了。
那么CSS比JavaScript有什么优势呢?如果是这样,为什么CSS会更好?它是否更快?
是的,因为浏览器最懂得如何利用系统资源执行动画,并且在使用CSS本地实现它们时可以最好地完成该工作(例如硬件加速)。对于JavaScript,您依赖于浏览器的脚本引擎来为您计算动画,这可能非常昂贵。
但正如上面提到的,最大的缺点是支持不足。
此外,从语义上讲,CSS应该仅用于样式/定位,这样CSS是否开始超出其设计范围?
总的来说,它一直是用于呈现 - 将其作为与内容和结构分离的问题,当HTML充斥着展示性属性时,这会给他们当时的任何前端开发人员带来开发地狱。
您描述的所有这些花哨效果都可以轻松地归类为演示文稿(即它们与应用程序逻辑、业务逻辑、内容、数据等无关),因此似乎应该使用CSS来完成。而这就带我们来到今天。
所以,总结一下:
- 当浏览器支持是首要考虑因素时(在商业应用中几乎总是如此),会使用JavaScript。如果将其转换或迁移到另一种技术成本过高,通常会保持不变。
- 否则,会使用CSS。当然,通常提供JavaScript回退。您通常会在实验或新/创业项目中看到这一点。

1
这回答了所有问题!谢谢! - PRNDL Development Studios

5

我这里看不到VS。其实,我认为一个伟大的Web应用程序应该将它们两者混合使用!

我喜欢想象JavaScript用于用户交互,CSS用于设计。这就是我如何决定在特定目的下应该使用哪一个。

现在,你可以从一些杰出人才的伟大工作中获得很多解决兼容性问题的方法。例如:http://modernizr.com/


0
一个主要的问题是并不是每个人的浏览器都启用了Javascript。因此,如果您可以使用HTML5/CSS3实现相同的效果,它具有优势,即它将在所有现代浏览器上工作,无论它们是否启用了Javascript。

6
更大的问题是,并非所有浏览器都支持CSS3。禁用JavaScript的用户只占互联网流量总量的小于2%,但使用<=IE8浏览器的用户则要多得多。 - mawburn
这是未来的必然趋势。禁用Javascript的人出于安全考虑,他们永远不会启用它。而且所有浏览器对CSS3的支持都已经相当成熟了。 - thatidiotguy
期望看到网站开始像对待IE7用户一样对待那些人。(即:他们将不再关心他们)花费太多时间试图迎合越来越少的用户,这些用户生活在一些陈旧的理念中,认为禁用JavaScript可以更安全(然而大多数人仍然安装了Flash)。 - mawburn

0

是的,CSS比JavaScript更快。 此外,JavaScript需要额外的HTTP请求,而如果只使用CSS,则可以避免这种情况。


5
JavaScript 不需要比 CSS 更多的额外请求。两者都可以放在内嵌标签或单独的文件中。 - Guffa
我没有说过那个。如果你使用外部加载的CSS和JavaScript,而JavaScript部分可以仅使用CSS完成 - 你可以节省文件加载(HTTP请求)。 - Alvarez
1
我了解你的意思,但同样的道理是CSS需要额外的请求。如果你只使用Javascript就能实现同样的效果,那么你就不需要加载CSS。 - Guffa
是的,但你见过现在还有不使用 CSS 的网站吗?我不这么认为。另一方面,我看到很多不使用 JavaScript 的网站。 - Alvarez
哇!你什么时候看到那么多不使用 JavaScript 的网站了?1980年? - Gilberto Ramos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接