Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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替换CSS_Javascript_Css - Fatal编程技术网

用JavaScript替换CSS

用JavaScript替换CSS,javascript,css,Javascript,Css,我对来自PHP/MySQL环境的客户端编程比较陌生。我理解CSS和JavaScript在浏览器环境中可以扮演的角色,但是,如果没有JavaScript,CSS似乎是不可逆转的停滞。我绝对不想引起争论,但对于我这个“新手”来说,情况就是这样。那么为什么不只使用JavaScript来设置元素属性呢?如果是这样,这是一种普遍的做法吗?(我确信CSS的速度要快得多…CSS用于页面布局和样式 Javascript是用于行为的 即使有可能用javascript完全取代css,但这并不是标准做法,大多数web

我对来自PHP/MySQL环境的客户端编程比较陌生。我理解CSS和JavaScript在浏览器环境中可以扮演的角色,但是,如果没有JavaScript,CSS似乎是不可逆转的停滞。我绝对不想引起争论,但对于我这个“新手”来说,情况就是这样。那么为什么不只使用JavaScript来设置元素属性呢?如果是这样,这是一种普遍的做法吗?(我确信CSS的速度要快得多…

CSS用于页面布局和样式

Javascript是用于行为的

即使有可能用javascript完全取代css,但这并不是标准做法,大多数web开发人员都会对其表示严重不满


好的web开发总是假定客户端可能已关闭javascript,并将提供一个优雅的默认设置。用javascript替换css可能会使这变得不可能。

这远远不是一种常见的做法,事实上,这可能会被视为一种不好的做法

CSS用于设置页面的样式,并在页面加载时呈现。Javascript在页面加载后开始发挥作用,可以操纵现有的样式和页面

如果你把它放在所有的JS中,它将是非常低效的!如果您在JS中大量使用DOM操作,那么DOM操作的成本就会很高,而使用javascript而不是CSS来处理所有样式将需要大量的操作。客户端上的负载将是荒谬的,并且当客户端尝试进行所有这些更改时,可能会出现明显的延迟。另外,如果客户端禁用了javascript会发生什么?这就是你整个网站的外观和感觉


将CSS视为定义页面的外观和呈现方式,然后将JS视为在完成呈现后更改页面。您不应该预先将任何可以使用简单CSS样式进行的操作推送到javascript中。

使用javascript设置样式属性的唯一时间是在运行时需要更改样式时。在可能的情况下,应始终使用CSS进行样式设置,因为:

  • CSS在浏览器间的实现往往比JS更加一致
  • 用户可能已禁用JS
  • 在CSS中进行样式化的“代码”比等效的JS代码要简洁得多,并且更易于读/写

    • 将CSS更改为javascript的真正问题是可维护性和性能。CSS使找到单个元素的样式并对其进行更改变得非常简单,而不会影响页面的其余部分。即使对于一个简单的页面,Javascript也会变得很麻烦,对于一个更复杂的页面,Javascript将完全无法管理

      在性能方面,每当javascript执行时,页面都会“冻结”。考虑到需要布局1000个元素的页面,根据布局的复杂性,执行时间可能很容易增长到一分钟或更长。CSS将以本机方式处理此问题,并且不会对浏览器进行任何“冻结”。这将导致您的页面在有人访问的第一段时间内无法使用,并且(根据统计数据),在观众对您的页面不感兴趣并离开之前,您只有10秒钟的时间来吸引他们的注意力,这意味着您赶走了所有的新访问者。

      一些要点:

      CPU成本

      运行Javascript将样式应用于单个元素的速度会非常慢。Javascript是同步的,因此它必须一次更新一种样式。另外,正如其他地方提到的,遍历DOM在计算上非常昂贵。如果您在应用样式,因为每次应用更改时都会强制浏览器重新渲染站点,则情况会更糟

      人才成本

      尝试用Javascript编写和维护样式在心理上也是昂贵的。它是一种函数式语言,从未打算包含布局规则。CSS只是更容易阅读

      它们层叠而下

      CSS代表级联样式表。样式可以相互继承属性的最大好处之一。考虑以下事项:

      a.nav { font-weight: bold; }
      
      现在,您与“nav”类的所有链接都是粗体的。但如果您希望进一步修改链接,您仍然可以:

      li a.nav { color: red; }
      
      现在,列表项中包含的所有a.nav链接都将显示为红色和粗体。使用javascript可以做到这一点,但您必须强制执行,维护将非常糟糕

      如果你使用Javascript作为风格,你的同事会把你打死


      我认为这是一个不言自明的问题

      这是一个很好的问题,但该死的,回答这个问题需要很长时间。回答得很好。渲染时间太长,我会被排斥,而且对JavaScript来说是不自然的,即使是可行的。谢谢