Modernizr和后代选择器?

时间:2013-01-17 08:10:14

标签: html css performance html5 modernizr

根据 mdn

  

后代选择器是CSS中最昂贵的选择器。它是   非常昂贵 - 特别是如果选择器在标签或   普遍类别。

当Modernizr启动时,它会将所有不受支持的类添加到html标记。

他以后可以这样做:

.myNotSupportedClass .myLastDiv   <-- notice descendants selecotr[ ]
{
  color:red;
}

但这是绝对慢的操作一个可以优化的操作....它必须遍历所有DOM树才能找到div。
我知道没有其他办法可以做到,但仍然:

1)他们可以将这些类添加到更接近元素的body/form。所以搜索的次数会减少。

或者我错了......?

1 个答案:

答案 0 :(得分:1)

  

但这是绝对慢的操作

的Eh。

  

他们可以将这些类添加到更接近元素的body/form。所以搜索的次数会减少。

body:搜索量少了多少?少1级?这有多大差异?

form:并非每个页面都有表单,页面可以包含多个表单。 form元素本身也可以放在页面体中的任何位置,因此应该受Modernizr类上下文中的选择器影响的元素可能与它无关,使得完全不可能

做任何你喜欢的事情,但由于Modernizr选择在html元素上放置类,所以编写使用这些类和后代选择器的上下文选择器。如果您对后代选择器性能非常着迷,那么您可以选择不使用Modernizr并失去它带来的所有功能检测功能。

为什么它选择在html元素上放置类是任何人的猜测。它可能是放置它们最方便的元素。