WebKitブラウザには、スタイルレンダリングのための最適化手法が組み込まれているため、ページ上の要素の約60%をスタイルに一致させる必要がありません。場合レンダリングの最適化と兄弟セレクタ
しかし、その最適化はページ全体のために完全にオフになっている「すべての兄弟セレクタは、スタイルシート内の任意の場所に遭遇した...これは:first-child
と:last-child
などの+
セレクタとセレクタが含まれています。」
誰もこの最適化を無効にするセレクタタイプの完全なリストを知っていますか?
-
詳細
最適化は、ブラウザの内部にタリGarsielの研究で議論されている:How Browsers Work。
ここでは明らかに、ブラウザのコードを執筆しDave Hyattから兄弟セレクタの完全な引用は、です:「すべてで使用中の兄弟セレクタがあってはならないWebCoreは、単に任意の兄弟セレクタが検出されたグローバルスイッチをスローし、スタイルの共有を無効にします。 first-childと:last-childのようなセレクタとセレクタが含まれています。
を(今後のSafariのリリースで)」WebCoreは、私は本当にクールな最適化があります。引用は、彼はより詳細(前回と同じソース)でそれを論じ下ハイアットが2005年に書いた記事から来るように思われること要素に適用される一連の宣言を計算する必要もなくなりました。実際にこの最適化を行うと、ページ上の要素の約60%をスタイルに一致させる必要はありません。ページ内の2つの要素がDOM(および他の状態)検査によって同じスタイルを持ち、可能であればこれらの2つの要素の間でフロントエンドスタイル情報を単に共有する場合。
このarticle by Nate Koechleyはアルゴリズムをより詳細に説明しています。彼はそれを以下のようにまとめています:
"ウェブ開発では、同じことをするには6つの異なる方法がよくありますが、良いウェブ開発者は常に、ほとんど区別がつかない最善の方法を選んでいます。ブラウザーの勇気をより完全に理解し、最良の方法を選択するのに役立ちます」ハイアットもまた、ライアンKinalからStack chatで簡単に思いついたこのW3C mailing list archive
で最適化を議論:「うわーだけすごい私は再び別の兄弟セレクタを使用することはありません。。。「
私が知ることに特に興味:
子セレクタはまた、トライデント/ IEが
かどうか任意の同様の最適化を使用するかどうかを最適化
をオフにするかどうかどのような違いがレンダリングのパフォーマンスに与える影響が大きいかを示すテストが存在します
ありがとうございます - これは素晴らしい情報です。もし誰かがそれを見つけるのを知っていれば、関連するソースコードを見たいと思うでしょう。 – cantera
@downvoter、何が間違っていますか? –
申し訳ありませんが誰かがdownvoted、私は本当に有用なあなたの情報を発見しました。私に役立つもう一つの答えをアップアップしました – cantera