CSSの書式は以下の形をしています。
セレクタ { プロパティ:値; }
セレクタはスタイルを適用する対象、プロパティは設定するスタイルの性質、値はプロパティの値です。
何に対して { 何を:どうする; }
上記のように考えるとわかりやすいと思います。
「プロパティ:値;」は宣言と呼ばれます。宣言は「;」で区切って複数指定することができます。また、途中で改行しても構いません。
セレクタ { プロパティ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記述することができません。
セレクタの代表的な表記をあげます。青く塗られているセレクタは良く使うのでしっかり覚えてください。
今回は、上の6つ(3つ+3つ)を覚えましょう。下の6つ(4つ+2つ)は後に出てきた際に覚えればいいです。
名称 | セレクタ | 意味 |
---|---|---|
全称 | * | 全ての要素 |
タイプ | 要素名 | 特定した要素 |
子孫 | 要素名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 | 要素の後 |
どうしてこんなに多くのセレクタが必要なのでしょうか。
それは、対象となるタグを限定する必要があるからです。例えば、「a
」とセレクタに記述した場合には、「リンクタグに対して」という意味になります。これは、リンクタグすべてを表します。これだけでは、同じタグは同じ表現しかできません。「このリンクタグに対して」など、限定して使いたい場面がでてきます。
限定をかける際によく使うのは、子孫セレクタ(要素中に現れる要素)です。これは、HTMLのタグ構造によります。タグ構造を理解しなければいけない理由がここにあります。
前回紹介した「class属性」や「id属性」を使う方法もそうですが、HTMLにclassやidを書かなければいけないため、少し使いづらいですね。
下記の例を参考にして、どのように限定をかけるのかを覚えてください。
例 セレクタ (宣言部分は省略)
* { }/* 全ての要素 */
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は文書中に一ヶ所なのでタグ名は省略可能 */
#contents p a , #menu a { }/* 「ID名がcontentsである要素中のp要素中のa要素」 と「ID名がmenuである要素中のa要素」 */
プロパティの値は、プロパティごとに指定するものが異なります。個々のプロパティの値については、CSSリファレンスを参考にしてください。
長さを指定する場合には、必ず以下のいずれかの単位をつけて表記します。例外として「0」だけは単位なしで記述できます。HTMLでは単位なしの記述なので違いに注意してください。
これも覚えるのは青く塗られた箇所だけで構いません。
相対指定 | em | 要素のフォントサイズを1とした倍率 |
---|---|---|
ex | 要素の小文字の「x」のフォントサイズの高さを1とした倍率 | |
絶対指定 | px | ピクセル |
in | インチ(2.54cm) | |
cm | センチメートル | |
mm | ミリメートル | |
pt | ポイント(1/72 in) | |
pc | パイカ(12pt) |
相対指定では、ブラウザで文字サイズを変更(表示→文字サイズ)した際に長さが変更されます。
「/*」と「*/」で囲った範囲をコメントと呼びます。囲まれた範囲は意味を持ちません。
/* コメント */
コメントで説明がついていると、他の人が読んだり、後で自分が読んだりする時にわかりやすくなります。
また、CSSの一部を「/*」と「*/」で一時的に囲って、機能しなくすることができます。このようなコメントの使い方をコメントアウトと呼びます。
例 コメントアウト
/* セレクタ { プロパティ: 値; } */
セレクタ { プロパティ1: 値;/* プロパティ2: 値; */
}
Programming Laboratory (Shio seminar)