レイアウトデザインのためのCSS 3 id と classの違いと合わせ技の記述

ブログデザインのためのCSSレイアウト 3 id と classの違いと合わせ技の記述

前回から#wrapperとか#flashとか#mainとか当たり前のように記述していましたが、CSSの基本ですのでもう一回おさらいしておきます。

普通、CSSのとっかかりとしては、

div{font-size:12px}

のように、HTMLの基本であるタグに対しての装飾を最初に覚えます。
しかしタグ単位での装飾(プロパティ)だけではレイアウトデザインには足りません。

そこで、idとclassが登場します。

簡単にその2つの違いを説明すると、

  • id = 各ページに1回しか使えない。
     CSSでは # をつけて指定する。
  • class = 各ページに何度でも使える。
      CSSでは .(ピリオド)をつけて指定する。

ということになります。
idもclassもどのHTMLタグに使ってもOKですが、idは各ページ1回しか使えないのでdivなどのレイアウトに使用するタグにつけるのが普通です。

また、idとclassは併用できます
ひとつのHTMLタグに対して idとclassの両方を一度に使ってもOKです。
ただ、同じ装飾(プロパティ)がかぶった場合の優先順位はあります。

記述の例
●こんなCSSがあったとして

div
{font-size:12px;color:blue;} ←文字サイズ12px、文字色を青

#main
{border:5px double #000000;color:green;}←二重罫線で囲み、文字色を緑

.red
{text-decoration:underline;color:red;}←下線をつけて、文字色を赤

●HTML

●<div>divタグだけの装飾</div>

  

●結果→

 

●<div id="main">id属性が加わった場合</div>

  

●結果→

 

●<div id="main" class="red">id属性+class属性の合わせ技</div>
●<div class="red">classタグだけの装飾</div>

  

●結果→

注目は id="main" class="red" の場合です。
2つの属性それぞれが適用された結果、かぶったcolorの指定は i d が 優 先 されています。(図:上)
かぶりあわない部分(borderとtext-decoration)は両方とも適用されました。

●CSSの指定はもっと細かくできる

例えばこんな指定も可能です。

#main p{text-decoration:underline;color:red;}

これは、<xxx id="main">の中に出てくる<p>にのみこの指定を適用する、という意味になります。(xxx はなんらかのタグ。divが一般的ですが、tableとかでもOK)

<xxx id="main">から外れた部分の<p>には適用されません。

 

さらに入れ子にすることもできます。

#main p.red a{text-decoration:none}

これだと<xxx id="main">の中の<p class="red">の中の<a>タグにのみ指定されます。
半角スペースで区切っていくとどんどん入れ子構造になっていくわけです。

 

また、その他に、複数のclassを1つのHTMLタグに指定することも可能です。

.size
{font-size:12px;} ←文字サイズ12px

.keisen
{border:5px double #000000;}←二重罫線で囲み

.red
{color:red;}←文字色を赤

というCSSがあったとき、

<p class="size keisen red ">3つのクラスを指定</p>

というように、class="   "の間に半角スペースを入れて記述すると複数のclassの装飾を指定できます。

●スタイルシート自体の優先順位

スタイルシート自体にも優先順位があります。

スタイルシートが記述できる場所は、

1.外部書類(xxx.css)
  <link rel="stylesheet" href="xxxx.css" type="text/css" />
  で読み込ませる。
2.HTMLの<head>部分
  <style> <!– –> </style> の中に記述。
3.HTMLタグ内
 タグの中に style="xxx:xxx;xxxx:xxx;"  というようにずらずら書いていく。

の3つです。
 基本「後から読み込まれたほうが優先」です。
 なので、最も優先順位が高いのが3になります。

 1と2についてはhead部分にどちらを先に書くかで変わってきます。

<style> <!– body{xxx:xxxx} –> </style>
<link rel="stylesheet" href="xxxx.css" type="text/css" />

だと1(外部ファイル xxxx.css の記述)が優先ですし、

<link rel="stylesheet" href="xxxx.css" type="text/css" />
<style> <!– body{xxx:xxxx} –> </style>

にすると2のほうが優先です。

コメントする