代码之家  ›  专栏  ›  技术社区  ›  Josh Leitzel

在CSS中使用非常特定的选择器是否有好处?

  •  8
  • Josh Leitzel  · 技术社区  · 15 年前

    我理解在jquery中,使用选择器时更具体一些是有利的,这样jquery就不必遍历整个dom来找到您要查找的内容。例如, $('span.description') 比仅仅是 $('.description') 如果我知道 description 类只应用于 <span> 元素。

    CSS也是这样吗?我有什么特别的优势吗 span.description { } 而不是 .description { } ?我在考虑速度、优化等问题。我是否通过告诉浏览器确切的位置来保存任何工作?

    5 回复  |  直到 15 年前
        1
  •  7
  •   Kelly Robins    15 年前

    这在CSS中是正确的-

    一个好的规则是从最近的ID下降。 ID被编入索引,因此定位它们的速度非常快。没有理由在选择器中使用多个。

    Google Code- Optimize browser rendering

    这回答了我在这个问题上的许多问题,包括这个问题。- 希望你觉得它有用。

        2
  •  2
  •   Community CDub    8 年前

    了解CSS的特殊性——这是让你的CSS或多或少更具体的最重要原因。

    http://www.w3.org/TR/CSS2/cascade.html#specificity

    由于浏览器性能几乎是一个没有问题的问题(除了jquery中的问题,正如您所提到的),所以我的指导原则是,当您控制优先级时,或者当您希望在您的CSS中使某些内容更具可读性时,要具体说明。过度指定可能会使重新使用CSS选择器变得困难,并使事情变得过于复杂。

    编辑

    这看起来有点重复:

    CSS Performance Question

        3
  •  1
  •   Niko    15 年前

    它总是取决于HTML代码的数量和结构。使用特别是ID和适当的选择器绝对是一个好主意。(也就是说,用nav li代替li.nav)。因为浏览器首先加载HTML,然后应用CSS,所以您可以提供很多帮助。

    这就是说,在纯CSS(无jquery)中,速度差异现在不容易区分,因为渲染引擎是高度优化的,尤其是在应用CSS时。所以正常情况下这不重要。

        4
  •  0
  •   Guffa    15 年前

    据我所知,您的选择器的具体程度对性能几乎没有影响。

    更具体的选择器最有用的两个方面是减少在不需要的地方不应用它的风险,并使一个选择器优先于另一个选择器。

        5
  •  -1
  •   Philippe Leybaert    15 年前

    更具体的规则优先于不太具体的规则,因此:

    span.myclass {}
    

    优先于:

    .myclass {}
    

    (无论规则的宣布顺序如何)