根据 mdn :
后代选择器是CSS中最昂贵的选择器。它是 非常昂贵 - 特别是如果选择器在标签或 普遍类别。
当Modernizr启动时,它会将所有不受支持的类添加到html
标记。
他以后可以这样做:
.myNotSupportedClass .myLastDiv <-- notice descendants selecotr[ ]
{
color:red;
}
但这是绝对慢的操作一个可以优化的操作....它必须遍历所有DOM树才能找到div。
我知道没有其他办法可以做到,但仍然:
1)他们可以将这些类添加到更接近元素的body/form
。所以搜索的次数会减少。
或者我错了......?
答案 0 :(得分:1)
但这是绝对慢的操作
的Eh。
他们可以将这些类添加到更接近元素的
body/form
。所以搜索的次数会减少。
body
:搜索量少了多少?少1级?这有多大差异?
form
:并非每个页面都有表单,页面可以包含多个表单。 form
元素本身也可以放在页面体中的任何位置,因此应该受Modernizr类上下文中的选择器影响的元素可能与它无关,使得完全不可能
做任何你喜欢的事情,但由于Modernizr选择在html
元素上放置类,所以编写使用这些类和后代选择器的上下文选择器。如果您对后代选择器性能非常着迷,那么您可以选择不使用Modernizr并失去它带来的所有功能检测功能。
为什么它选择在html
元素上放置类是任何人的猜测。它可能是放置它们最方便的元素。