少なくとも理論的には、少なくともパフォーマンスの観点からは、浅い、できれば1レベルのセレクターが望ましいという事実については正しいです。ただし、ほとんどの場合、レンダリングエンジンの最適化により、パフォーマンスのオーバーヘッドがわずかに相殺されます。
これは、メンテナンスのしやすさ、読みやすさ、スタイルシートのサイズが重要になるときです。特異性を下げると、「部分的な」クラスをリサイクルできます。レンダリングされたマークアップを見ると、他.ui-dialog
のクラスがたくさん適用されます。
ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-draggable ui-resizable
代わりに、すべてのプロパティを1つのルールに適用することが望ましいでしょうか。開発者の観点からは間違いなく、そのアプローチはメンテナンスの悪夢になりました。単一の表示プロパティを変更してから、例のようにすべての「特定の」ルールにバックデートする必要があると想像してください。
これらのセレクターの特異性を高めるために、セクターセレクター(たとえば.ui-dialog .ui-dialog-content
)を修飾する理由は、すぐには明らかではないにしても、はるかに簡単です。たとえば.ui-helper-reset
、ルールはcssファイルの下部で宣言されているため、クラスは基本的に以前に設定されたスタイルを無効にします。
.ui-helper-reset {
border: 0 none;
font-size: 100%;
line-height: 1.3;
list-style: none outside none;
margin: 0;
outline: 0 none;
padding: 0;
text-decoration: none;
}
これらのプロパティのいずれかをオーバーライドするには、より特異性の高いセレクターを使用する必要があります。
個人的に私はこのパターンが嫌いです-そしてコードの一貫性がそのようなクラス構造の背後にある推論にもっと貢献したことを願っています。