CSS: 書式

CSSの書式は以下の形をしています。

CSSの書式

セレクタ { プロパティ:値; }

「プロパティ:値;」は 宣言と呼ばれます。セレクタはスタイルを適用する対象、プロパティは設定するスタイルの性質、はプロパティの値です。HTMLとの対応を考えると、セレクタ=要素、プロパティ=属性名、値=属性値と考えるとわかりやすいと思います。

宣言は「;」で区切って複数指定することができます。また、途中で改行しても構いません。

セレクタ {
    プロパティ1:値1;
    プロパティ2:値2;
    プロパティ3:値3;
    プロパティ4:値4;
       :
}

なお、「}」の直前のセミコロンは省略可能です。

複数のプロパティはどの順番に記述しても構いません。「ボックスの外側の物から書く」とか自分なりの流儀を決めると良いでしょう。

また、この書式も複数記述できます。どの順番に記述しても構いません。これも自分なりの流儀を決めると良いでしょう。

重複した場合の優先度にはカスケードというルールがあるのですが、ここでは細かくは解説しませんが、ある要素の同じプロパティに対して複数個所で記述した場合には、後で記述したものが優先されることは覚えておきましょう。

例 後で記述したものが優先

セレクタ1 {
    プロパティ1:値1;
    プロパティ1:値2; /* プロパティ1の値は値2で上書きされる */
}

同じセレクタに対する宣言を複数個所に記述しても構いませんが、一つにまとめた方がわかりやすくなります。

セレクタ1 {
    プロパティ1:値1;
}
セレクタ1 {
    プロパティ2:値2; 
}
/* 特に離れた箇所に記述すると他方を見落として間違えやすいため、 
   下記のようにまとめて書く習慣をつけましょう。*/
セレクタ1 {
    プロパティ1:値1;
    プロパティ2:値2; 
}

セレクタの指定方法

セレクタは対象となる要素の指定方法です。ここを正しく理解できないとCSS記述することができません。しっかり覚えましょう。

セレクタには以下の指定ができます。IEはInternetExplorerでの対応を表します。IE8は全てのセレクタに対応しています。

名称セレクタIE6IE7 意味
全称* 全ての要素
タイプ要素名 特定した要素
子孫要素名1 要素名2 要素名1の中で使用される要素名2
子供要素名1>要素名2× 要素名1の中で直に使用される要素名2
隣接要素名1+要素名2× 要素名1の直後に現れる要素名2
属性要素名[属性名]× 指定した属性を含む要素
要素名[属性名=値]× 指定した属性と属性値を含む要素
グループ化要素名1, 要素名2 指定した複数の要素
クラス要素名.クラス名 クラス名が指定された要素
ID要素名#ID名 ID名が指定された要素
擬似クラス 要素名:first-child× 親要素内で最初の子供要素である要素
要素名:link 未読リンク先の要素(a要素のみ使用可)
要素名:visited 既読リンク先の要素(a要素のみ使用可)
要素名:hover マウスがロールオーバーの状態にある要素
要素名:active マウスで押されている状態の要素
要素名:focus×× ユーザーによってフォーカスされている状態の要素
要素名:lang(言語名)×× 指定した言語で記述された要素
擬似要素要素名:first-line 要素の最初の一行目
要素名:first-letter 要素の最初の一文字目
要素名:before×× 要素の前
要素名:after×× 要素の後

IE6で対応しているセレクタは良く使うのでしっかり覚えてください。

例 セレクタ (プロパティ部分は省略)

* { } /* 全ての要素 */

h1 { } /* h1要素 */

p a { } /* p要素中で使用されるa要素 */

p * { } /* p要素中で使用される全ての要素 */

h2, h3 { } /* h2要素とh3要素 */

div.clearfix { } /* class名clearfixが指定されたdiv要素 */

*.clearfix { } /* class名clearfixが指定された全ての要素 */
/* ↑*は省略可能 */

div#contents { } /* ID名contentsが指定されたdiv要素 */
/* ↑IDは文書中に一ヶ所なのでdivは省略可能 */

a:hover { } /* マウスがロールオーバーしているa要素 */

p:first-letter { } /* p要素の最初の1文字 */

#contents p a , #menu a { } 
/* 「ID名がcontentsである要素中のp要素中のa要素」
   と「ID名がmenuである要素中のa要素」 */

プロパティの値

プロパティの値は、プロパティごとに指定するものが異なります。個々のプロパティの値については、CSSリファレンスを参考にしてください。

長さを指定する場合には、必ず以下のいずれかの単位をつけて表記します。例外として「0」だけは単位なしで記述できます。

相対指定em要素のフォントサイズを1とした倍率
ex要素の小文字の「x」のフォントサイズの高さを1とした倍率
絶対指定pxピクセル
inインチ(2.54cm)
cmセンチメートル
mmミリメートル
ptポイント(1/72 in)
pcパイカ(12pt)

相対指定では、ブラウザで文字サイズを変更(表示→文字サイズ)した際に長さが変更されます。

コメント

「/*」と「*/」で囲った範囲をコメントと呼びます。囲まれた範囲は意味を持ちません。

/* コメント */

コメントで説明がついていると、他の人が読んだり、後で自分が読んだりする時にわかりやすくなります。

また、CSSの一部を「/*」と「*/」で一時的に囲って、機能しなくすることができます。このようなコメントの使い方をコメントアウトと呼びます。

例 コメントアウト

/*
セレクタ {
    プロパティ: 値;
}
*/

セレクタ {
    プロパティ1: 値;
/*  プロパティ2: 値; */
}