Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.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
如果你是特定的,CSS会更快吗?_Css_Performance_Css Selectors - Fatal编程技术网

如果你是特定的,CSS会更快吗?

如果你是特定的,CSS会更快吗?,css,performance,css-selectors,Css,Performance,Css Selectors,div.container比快吗? 您知道,就像在jquery中一样,如果您更具体地使用选择器,那么它会更快,因为它通过更少的时间进行迭代。。css就是这样吗 有没有办法衡量css的性能? 就性能而言,像这样的事情是否重要,还是基本上都取决于文本的权重 如果有人知道答案,我会很高兴。事实上,我发现了一个类似的问题,但没有确定的答案。 一般来说,规则越少越好,因此.container将比div.container更快。除了缓存,先读取.container,然后其他元素必须添加div作为第二级过滤器

div.container快吗? 您知道,就像在jquery中一样,如果您更具体地使用选择器,那么它会更快,因为它通过更少的时间进行迭代。。css就是这样吗

有没有办法衡量css的性能? 就性能而言,像这样的事情是否重要,还是基本上都取决于文本的权重

如果有人知道答案,我会很高兴。事实上,我发现了一个类似的问题,但没有确定的答案。

一般来说,规则越少越好,因此.container将比div.container更快。除了缓存,先读取.container,然后其他元素必须添加div作为第二级过滤器。。。在许多情况下是不必要的

这在整个引擎中非常常见,尽管存在一些较小的增量

请参阅这篇文章:,尽管它来自MDN(因此是Mozilla面向的),但对于我所知道的大多数引擎来说,这篇文章都是正确的

最佳情况和最差情况之间的差值为50ms。换句话说,考虑选择器的性能,但是不要浪费太多的时间。 见:

因此,我认为仅仅为了获得更高的性能而扩展CSS规则没有多大意义。只考虑更高的网络流量,可能更差的可维护性,… 但是,在链接中,可以读取哪些规则,而不必增加CSS大小。

如果.container和div.container在您的页面上完全匹配相同的元素,那么第一个可能会更快:如果浏览器首先计算.container,实际上它应该已经完成了,但是对于div.container,它还需要检查元素是否是div


免责声明:我不知道浏览器是如何实现这些功能的。我的结论基于链接文章。

在现实世界中,速度差可以忽略不计。
从技术角度来说,
。容器
将更快,因为它需要处理的选择器更少

选择器具有固有的效率。效率从高到低的CSS选择器顺序如下:

  • ID,例如
    #标题
  • 类,例如
    .promo
  • 类型,例如
    div
  • 相邻兄弟姐妹,例如
    h2+p
  • 儿童,例如
    li>ul
  • 后代,*例如
    ula*
  • 通用,即
    *
  • 属性,例如
    [type=“text”]
  • 伪类/-元素,例如
    a:hover
  • 关于你的第二个问题:

    有没有办法衡量CSS的性能

    SteveSouders进行了一项在线测试,以测量仍然可以访问的CSS的性能

    现在有更好的方法来衡量性能,但这是一个快速简单的资源,您可以使用

    就性能而言,像这样的事情是否重要,还是基本上都取决于文本的权重

    简而言之,答案是“不是真的”

    答案很长,“视情况而定”。如果你在一个简单的网站上工作,那么除了从最佳实践中获得的一般知识之外,对CSS性能大惊小怪是毫无意义的


    如果您正在创建一个包含数万个DOM元素的站点,那么是的,这很重要。

    我认为
    .container
    div.container
    更快,因为它使用的字节数更少(因此css传输得更快)。当涉及到浏览器呈现内容时,我不知道。这取决于实现。我不能支持这一点,但我坚信这是无关紧要的。每个浏览器的渲染周期根据每个样式规则查询每个元素以匹配,请定义“更快”。差值必须小于毫秒,这真的重要吗?可能使CSS呈现变慢的是您设置给规则的属性,而不是选择器本身。如果两个选择器都匹配相同的元素,那么
    div.container
    应该变慢,因为它(a)匹配所有
    。container
    元素(b)过滤掉
    div
    元素。我建议不要这样做“规则越少越好”。*比说:html>body>div>.container差得多。另一方面,“更具体的规则越好”的想法“当然是这样。您提出了一个有趣的观点,但我认为*实际上应该比html>body>div>.container快。*所做的是将自身插入所有标记的默认浏览器样式表上方。由于CSS基本上是一个三明治模型,所以它只是一个较低级别(因此不太具体)的选择器,但它胜过默认样式。这不像是要对每个对象执行memcopy(就像通过jquery或其他方式)。所以,尽管您所说的有些内容可能是正确的,但建议*天生比运行5条规则慢是有争议的。@JohnGreen那么为什么需要css Combinator呢?为什么不使用诸如“UserDivContainerLink”之类的特定类名,而不是“.User.Container>a”?我已经读得越来越深入了,仍然没有一个确切的答案。我曾经认为具体化更好,但对于CSS来说,它似乎起到了相反的作用,越具体,情况就越糟,因为它每次都会遍历整个DOM树。所以,我想我会尽量保持我的规则的通用性。你列出的名字是“Steve Sounders”,但url上有“Steve Souders”-这是一个打字错误吗?如果你想测试CSS性能,你也可以调整窗口大小。如果没有显示内容,则CSS太重。@xengravity:但是您将他的姓氏拼写为“n”,而他的域名将其拼写为“n”。这就是为什么克里斯认为其中一个可能是错误的:-)关于“固有效率”以及选择器顺序的部分抄袭了史蒂夫·苏德斯的书(以及在网上引用的书)。但如果我们要讨论“内在效率”