CSSの検索マッチング原理を理解し、CSSをより簡潔で効率的にする。

1991 ワード

簡単なCSSを見てください。DIV______________________、このCSSに対しての習慣では、ブラウザはまずidをdivBoxのDIV元素として検索し、見つけたらその下のp元素を全部探して、更にspan元素を調べて、spanのclassがredであることを発見したら、このスタイルを適用します。どんなに簡単で分かりやすい原理なのに、この理解は全く逆で、間違っています。整合原理:ブラウザCSSマッチングは、左から右に検索するのではなく、右から左に検索するのです。例えば前に言ったDIV_______________________、ブラウザの検索順序は以下の通りです。まず、これまでのclass='red'のspan要素を探してみます。見つけたら、父の世代要素の中にp元素があるかどうかを調べて、pの父の要素の中にdivBoxのdiv元素があるかどうかを判断します。全部存在すればマッチします。右から左へ検索するブラウザの利点は、関係のないスタイルや要素を早くフィルタするためです。例えば、css:
 
<style>
DIV#divBox p span.red{color:red;}
<style>
<body>
<div id="divBox">
<p><span>s1</span></p>
<p><span>s2</span></p>
<p><span>s3</span></p>
<p><span class='red'>s4</span></p>
</div>
</body>
を左から右に検索すると、関連しないpとspanの要素がたくさんあります。右から左に検索すると、まず「span class='red」の要素が検索されます。firefoxはこのような検索方式をkey selectorと言います。キーワードとはスタイルルールの最後(一番右)のルールです。上のkeyはspan.redです。簡潔で効率的なCSS:いわゆる効率的なCSSは、ブラウザがスタイルマッチングの要素を検索する時にできるだけ少ない検索を行い、以下にいくつかの私達がよく見るCSSを書いて、いくつかの非効率的なエラーを犯します。IDセレクタの前でタグ名を使わないでください。一般的な書き方はDIV_divBoxのほうがいいです。「IDセレクタは唯一なので、divを加えると余計に不必要なマッチングが増えます。」2.クラス選択器の前でラベル名を使うのはやめてください。一般的な書き方:span.redより良い書き方:red解釈:第一条と同じですが、複数定義しています。red、そして異なる要素の下でスタイルが違っていたら削除できません。例えば、cssファイルの中では下記のように定義されています。p.red{カラー:red}span.red{color=0000 ff}このように定義されているなら削除しないでください。削除したら紛らわしいですが、このように書くのはやめたほうがいいと思います。階層関係の一般的な書き方はなるべく少なくしてください。より良い書き方:.red{.}4.クラス関係の代わりにclassを使う一般的な書き方:嚔divBox ul li a{display:block;}もっと良い書き方:block{display:block}PS:右から左にかけての理論に疑問を持っている学生がいます。次にfirefoxとgoogleの2つのcssに関連して説明した文章を貼って、mozila firefoxを参考にしてください。https://developer.mozilla.org/en/Writing_Efficient_CSS google Page-speed:http://code.google.com/intl/zh-CN/speed/page-speed/docs/rendering.html