1

mdnによると:

子孫セレクターは、CSSで最も高価なセレクターです。特にセレクターがタグまたはユニバーサルカテゴリにある場合は、非常に高価です。

Modernizrが起動すると、サポートされていないすべてのクラスがhtmlタグに追加されます。

彼が後でできることを意味します:

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

しかし、これは絶対に遅い操作であり、最適化できる操作です....divを見つけるためにすべてのDOMツリーを通過する必要があります。
私はそれを行う別の方法がないことを知っていますが、それでも:

1)要素に近いクラスにそれらのクラスを追加できた可能性があります。body/formそうすれば、検索が少なくなります。

または私は間違っています...、?

4

1 に答える 1

2

しかし、これは絶対に遅い操作です

ええ

body/formそれらは、要素に近いクラスにそれらのクラスを追加することができたはずです。そうすれば、検索が少なくなります。

body:検索がどれだけ少なくなりますか?1レベル少ない?それはどのくらいの違いを生むのでしょうか?

form:すべてのページにフォームがあるわけではなく、ページには複数のフォームを含めることができます。要素自体もページ本体のformどこにでも配置できるため、Modernizrクラスコンテキストのセレクターの影響を受ける要素は、要素とは無関係であり、検索が完全に不可能になる可能性があります。

好きなことをしてください。ただし、Modernizrはhtml要素にクラスを配置することを選択するため、それらのクラスと子孫セレクターを使用するコンテキストセレクターを記述します。子孫セレクターのパフォーマンスにこだわる場合は、Modernizrを使用せず、それがもたらすすべての機能検出の良さを失うことを選択できます。

要素にクラスを配置することを選択する理由htmlは、誰の推測でもあります。それらを配置するのに最も便利な要素であった可能性があります。

于 2013-01-17T08:18:20.523 に答える