瀧のように
 

CSS実践編:CSSの基本step.5

前回は、HTMLにCSSを適用する3種類の方法をご説明いたしました。

私が思うに、外部化したスタイルシートを一枚でコメントアウトを上手く使い、
どこの部分がどこに適用されているか?
ひと目で分かるようにしてあると、後々、クリティカルCSSの記載や、
ピンポイントでの手直しなども、行いやすいかと思います。

それでは今回はッ、

・CSS適用の優先ルール
・セレクタの詳細度
・CSSの読み込み順序

上記について、記載していきます…。

CSS適用の優先ルール

セレクタはさまざまな組み合わせが可能で、1つの適用先に対して
異なる書き方が可能です。

同じ要素に対して複数のスタイルが指定されている場合、
セレクタの書き方やスタイルの記述順によって、
どの指定が適用されるかが決まります。

Web作成の現場では「指定しているのに反映されない!」と
いったトラブルが少なからず発生しますが、
そのようなときにも対応できるよう、スタイルの優先度を
決定するルールを記載していきます。

セレクタの詳細度

適用対象の要素が、より詳しく細かく指定されているスタイルのほうが優先される!
というルールがあります。

すべての要素に対応するユニバーサルセレクタと、
ページ内にひとつしかない名前で要素を指定できるidセレクタを
比較すると、idセレクタのほうが圧倒的に詳しく指定されていることになります。

そのため、ユニバーサルセレクタで指定されたスタイルとidセレクタで
指定されたスタイルが並んでいる場合、idセレクタで指定したスタイルが優先されます。

また、他の要素も含めおおまかに説明すると、
セレクタを使用せずHTMLのタグに直接埋め込むstyle属性が最も優先度が高く、
次はidセレクタの個数が多いもの、属性関連セレクタの個数が多いもの、
要素名の個数が多いものといった順になります。

<セレクタの優先順位>

セレクタ 優先度の数値(大きい方が優先度が高)
なし(style=”~”) 1000
#content #main 0200
div#header 0101
#header 0100
div.header 0011
a:link 0011
.header 0010
p a 0002
a 0001
h1 0001
* 0000

CSSの読み込み順序

もう一つのルールは、後から読み込まれたスタイルのほうが優先されます。

CSSファイルは上から下に向かって読み込まれるため、
ファイルの下のほうに記述されているほど優先されます。

セレクタの詳細度に差がない場合は、スタイルの読み込まれる
順序によってどの指定が適用されるかが決まります。

<適用例>

<!DOCTYPE html>
<html>
<head>
<style>
p {color: blue;}
p {color: green;}
p {color: red;}
</style>
<meta charset="utf-8">
<title>スタイルの読み込み順</title>
</head>
<body>
<p>このテキストのスタイルは「赤」が適用されます。</p>
</body>
</html>

今回は、CSS適用の優先ルールを大まかにご説明いたしましたが、
実際のお仕事の現場でのCSSを記載するコツは、

リセットCSS、html要素body要素などのCSSを記載後、
sectionごとに大きなブロックに分け、そこで共通のCSSを記載後、
後はhtmlの上から順に、出来るだけシンプルなセレクタでスタイルをおこなっていきます。

初めから、セレクタの優先度が高いものは使わず、
重複箇所が出てきたら、ひとつづつ優先度を上げていくように記載すると、
比較的シンプルで、分かり易いスタイルシートが記載できるかと思います。

ただでさえ複雑なスタイルシート、
出来る限りシンプルで短いソースコードで記載することが、
ページの表示速度や、メンテナンス性に優れたCSSになる事と思います。

とりあえず、今回はここまで…。

お仕事のご依頼は↓コチラより…、それではまた次回…。