CSSセレクターは、ブラウザーエンジンによって右から左にマッチングされます。したがって、まず子供を見つけ、次に親をチェックして、ルールの残りの部分と一致するかどうかを確認します。
- どうしてこれなの?
- それは仕様が言っているからというだけですか?
- 左から右に評価した場合、最終的なレイアウトに影響しますか?
私にとって最も簡単な方法は、要素数が最も少ないセレクターを使用することです。したがって、最初にIDを使用します(1つの要素のみを返す必要があるため)。次に、おそらくノードまたはノードの数が最も少ないクラスまたは要素です。たとえば、ページにスパンが1つしかない場合があるため、スパンを参照するルールを使用してそのノードに直接移動します。
ここに私の主張を裏付けるいくつかのリンクがあります
- http://code.google.com/speed/page-speed/docs/rendering.html
- https://developer.mozilla.org/en/Writing_Efficient_CSS
親でなければならない子のすべての親ではなく、親の子(多くの場合)をすべて見る必要がないように、このように行われているようです。DOMが深い場合でも、RTLマッチングでは複数のノードではなく、レベルごとに1つのノードのみを参照します。CSSセレクターLTRまたはRTLを評価する方が簡単/高速ですか?
#foo
セレクターはそれらすべてのノードに一致する必要があります。jQueryには、$( "#foo")が独自のルールを使用して独自のAPIを定義しているため、常に1つの要素のみを返すというオプションがあります。しかし、ブラウザはCSSを実装する必要があり、CSSはドキュメント内のすべてのものを指定されたIDに一致させると言っています。
querySelectorAll
)を使用します。他の場合では、シズルが使用されます。Sizzleは複数のIDに一致しませんが、QSAは一致します(AYK)。使用されるパスは、セレクター、コンテキスト、ブラウザーとそのバージョンによって異なります。jQueryのQuery APIは、私が「ネイティブファースト、デュアルアプローチ」と呼んでいるものを使用しています。私はそのことについて記事を書いたが、それはダウンしている。ここにあるかもしれませんが、fortybelow.ca