Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我是否应该尽可能避免使用JS,而改用CSS?_Javascript_Html_Css_Angularjs - Fatal编程技术网

Javascript 我是否应该尽可能避免使用JS,而改用CSS?

Javascript 我是否应该尽可能避免使用JS,而改用CSS?,javascript,html,css,angularjs,Javascript,Html,Css,Angularjs,我在寻找最佳实践答案。目前,我正在尝试添加一个下拉菜单到我的网站的导航栏。我发现我可以使用CSS,也可以使用JS-Angular。我读过这篇文章,因为JS可以编程恶意的东西,有些人会禁用JS。因此,为了在更多的计算机上保持你的网站功能,应该用CSS编程。这有什么好处吗?如果可能的话,我应该避免使用JS编码吗?这里有几个重要的原因,说明为什么您更喜欢使用CSS而不是JS 与JS相比,CSS动画的性能要好得多 动画。CSS在渲染动画时占用的内存不如JS多 如果您的动画取决于屏幕宽度,CSS媒体查询

我在寻找最佳实践答案。目前,我正在尝试添加一个下拉菜单到我的网站的导航栏。我发现我可以使用CSS,也可以使用JS-Angular。我读过这篇文章,因为JS可以编程恶意的东西,有些人会禁用JS。因此,为了在更多的计算机上保持你的网站功能,应该用CSS编程。这有什么好处吗?如果可能的话,我应该避免使用JS编码吗?

这里有几个重要的原因,说明为什么您更喜欢使用CSS而不是JS

  • 与JS相比,CSS动画的性能要好得多 动画。CSS在渲染动画时占用的内存不如JS多
  • 如果您的动画取决于屏幕宽度,CSS媒体查询就像一个魅力,没有任何延迟。但是,如果必须使用JS实现这一点,则必须将事件绑定到窗口大小,并在每次调整大小时执行操作
  • Javascript动画的开销总是比CSS动画略高,因为最终JS动画将操纵动画的CSS样式
然而,正如他们所说,每一个优点都有它的缺点。CSS动画不提供执行任何动画的自由

为元素的缩放、旋转和位置设置动画非常常见。在CSS中,它们都被塞进一个“transform”属性中,使得它们不可能在单个元素上以真正独特的方式进行动画制作。例如,如果要独立地设置“旋转”和“缩放”的动画,使用不同的计时和缓和,该怎么办?可能一个元素在不断地脉动(振荡比例),您希望在翻滚时旋转它。只有使用JavaScript才能实现这一点

参考资料:

如果你想要JS动画的灵活性和CSS动画的速度,你应该试试,它是建立在JavaScript之上的,比CSS动画快得多。是比较CSS动画(使用)、动画和动画的性能测试。不要忘记,结果可能因渲染引擎而异

结论: 这就是你可以做的

简单的动画,CSS可实现:使用CSS

简单的动画,无法用CSS实现:使用JS

重动画:使用或制作动画


CSS动画和JS
requestAnimationFrame
实现之间的性能比较令人惊讶。

取决于您所做的事情,每个开发人员的意见都会有所不同,CSS在创建交互式web体验方面也有其局限性。另外要考虑的是,如果使用某些更新的/实验性的CSS特性,你可能会因为斑点浏览器的支持而正确地使用你的网站。这个问题没有明确的答案。(除非你想建立一个只包含静态链接和…嗯,动画GIF的非交互式网站,好吧,有人会得到一个较差的UX。)我反对搁置这个问题,因为到目前为止,答案已经表明彼此一致,CSS是一个最佳实践,原因如下所示。当然,也会有例外,但总的来说,我的问题的答案是尽可能使用CSS。从IE6开始,你可以创建一个完整的CSS下拉菜单,但在很多情况下,你无法避免js(例如Ajax)。顺便说一句,我不同意这些答案。我不能在“主要基于观点”和“过于宽泛”之间做出选择:-/如果你只是想解决下拉列表问题,CSS或JS应该没有多大关系,前提是你的方式正确。否则,我的回答应该会给你足够的信息来进行比较。