このサイトでは,タイトル部分にカテゴリアイコンを表示している。これまで,このアイコン画像の枠線を消すのにインラインスタイルを使っていたが,これをスタイルシートに移して同様の効果を得るようにする。
このサイトでは,各記事のタイトル部分にカテゴリを示す画像を表示して,カテゴリアイコンとして使用している(nlog(n): カテゴリ表示のアイコンをつけるには)。画像には「枠線なし,右寄せ」のスタイルをつけている。これまでは,この画像スタイルを img タグ中のインラインスタイルとして style="border: none; float: right;" として指定していた。テンプレートでは次のようになっている。
この方法は XHTML 1.0 の文法としては正しいが,「文書の論理構造と表現を分離する」というスタイルシートの考え方からすると,好ましいとは言えない。文書の中に表現が埋め込まれてしまっているからである。そこで,画像のインラインスタイルを削除してスタイルシートに追加することにした。
スタイルシートには,次を追加する。
この意味は,「title というクラス名がついた要素に囲まれた img 要素に対して,括弧 {} の中のスタイルを適用する」ということになる。つまり,<div class="title"> ... <img /> ... </div> となっている部分の img だけに適用されることになる。これよりももっと限定して,「title というクラス名がついた div 要素に囲まれた img 要素」に対して適用したければ,「.title img」の代わりに「div.title img」とすればよい。
こうしておけば,img タグからは style 属性を削除してよいことになる。表示はもとのものと同じになる。
これですっきり。実は,今までインラインスタイルを使っていたのは,スタイルシートのセレクタがどのようにパターンマッチするのかが理解できていなかった,というオチだったりする。
セレクタと,それにマッチする要素について簡単にまとめておく。
セレクタ | 対応する要素 |
div#banner a | <div id="banner"><a ...>...</a></div> |
div.date a | <div class="date"><a ...>...</a></div> |
img | <img ... /> |
img.thumbnail | <img class="thumbnail" ... /> |
.thumbnail | <... class="thumbnail" ...> |
Master Archive Index
Total Entry Count: 1957