@charset "文字コード"
スタイルシートファイルの文字コードを指定する。
文字コード(代表的なもの) | 説明 |
---|---|
Shift_JIS | シフトJIS |
ISO-2022-JP | JIS |
EUC-JP | EUC-JP |
UTF-8 | UTF-8 |
CSS には @ で始まる @ルール(at-rule)と呼ばれる書式が定められています。これらは CSS でスタイルシートを記述するにあたってのルールを定義するものです。
@ルール には以下のものがあります。
@charset は、HTML 文書に記述するのではなく、HTML から読み込む外部のスタイルシートファイルに記述します。@charset はファイルの先頭に1つだけ記述し、スタイルシートファイルの文字コードを指定します。文字コードの値には次のようなものがあります。
スタイルシートファイルの文字コードを指定する。
文字コード(代表的なもの) | 説明 |
---|---|
Shift_JIS | シフトJIS |
ISO-2022-JP | JIS |
EUC-JP | EUC-JP |
UTF-8 | UTF-8 |
@charset "Shift_JIS"; p{color:blue;}
リストの先頭に表示するマーカーを作成します。
list-style で指定可能なリストスタイルを生成する。記述子 と 値 は複数指定できる。
記述子(代表的なもの) | 値 | 説明 |
---|---|---|
system | カウンタスタイルを指定する(規定値:symbolic) | |
cyclic | 記号リストを繰返し巡回する | |
fixed | 記号リストを一巡だけして、それ以降は標準に戻る | |
symbolic | 記号リストを繰返し巡回するが、一巡し終える度に 記号を二重三重に重ねるようにする 記号リストが a b c ならば a、b、c、aa、bb、cc、aaa、bbb、... となる | |
alphabetic | 記号リストを「アルファベット式 付番システムの数字」として解釈する 記号リストが a b c ならば a、b、c、aa、ab、ac、ba、bb、... となる | |
numeric | 記号リストを「位取り 付番システムの数字」として解釈する 記号リストが a b c ならば b、c、ba、bb、bc、ca、cb、... となる(a は 0 と見なされるので先頭には表示されない) | |
additive | 記号リストを「合算式命数法の数字」として解釈する ローマ数字のようにすべての数字の総和をとれば、元の数値を得られる(XVII=17) | |
extends | 既存のカウンタスタイルを拡張する | |
negative | 文字列 | カウンタ値が負のときに表示する負符号を定義する(規定値:"-") |
prefix | 文字列 | マーカ表現の先頭に付加される 接頭辞 を定義する(規定値:"") |
suffix | 文字列 | マーカ表現の最後に付加される 接尾辞 を定義する(規定値:". ") |
range | カウンタスタイルが定義されるカウンタ値の 範囲 を定義する(規定値:auto) | |
auto | 負の無限大~正の無限大(system が cyclic、fixed、numeric のとき) 1 ~正の無限大(system が symbolic、alphabetic のとき) 0 ~正の無限大(system が additive のとき) 拡張によって決まる(system が extends のとき) | |
下限,上限 | 下限に infinite を指定した場合は 負の無限大 上限に infinite を指定した場合は 正の無限大 | |
pad | 最小桁数 埋め込み文字 | “最小桁数”に満たない場合に埋め込む文字を定義する(規定値:0 "") |
fallback | カウンタスタイル名 | 現在のカウンタスタイルでカウンタ値を表現できないときに利用されるカウンタスタイルを指定する |
symbols | 空白区切りの記号 | 記号リストを "文字" や url("アドレス") で指定する (system が cyclic、fixed、numeric、symbolic、alphabetic のとき必須) |
additive-symbols | コンマ区切りの 重み 記号 | 記号リストを重み(値)と記号のペアで、重みの降順で指定する(ローマ数字ならば 10 X, 5 V, 1 I) (system が additive のとき必須) |
スタイルシート @counter-style triangle{ system: cyclic; symbols: '▲'; suffix: ''; } ボディ <ul style="list-style:triangle"> <li>One</li> <li>Two</li> <li>Three</li> </ul>
リストのマーカーが指定された ▲ で表示されます。
ユーザのデバイスに無くても表示できるようにサイト上のフォントを指定します。
サイト上のフォントを使用できるように定義する。記述子 と 値 は複数指定できる。
記述子(代表的なもの) | 値 | 説明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
font-family | フォント名 | font-family で指定可能な名前を指定する | |||||||||||||
src | 表示するために使用するフォント名を指定する(コンマ区切りで複数指定でき最初に見つかったフォントを採用する) | ||||||||||||||
local(フォント名) | ユーザのデバイスに存在するフォント名を指定する | ||||||||||||||
url(アドレス) format("フォーマット名") | 空白区切りで URI とフォント形式を指定する。
| ||||||||||||||
font-weight | フォントの太さを指定する | ||||||||||||||
normal | 標準(規定値) | ||||||||||||||
bold | 太字 | ||||||||||||||
bolder | より太い | ||||||||||||||
lighter | より細い | ||||||||||||||
100~900 | 100が細く、900が太い | ||||||||||||||
font-style | フォントスタイルを指定する | ||||||||||||||
normal | 標準(規定値) | ||||||||||||||
italic | イタリック体(専用フォントがあればそのフォントで表示する。 なければ oblique と同じ) | ||||||||||||||
oblique | 斜体(標準フォントを傾けて表示する) |
スタイルシート @font-face { font-family: basefont; src: url("/fonts/myfont.ttf") format("truetype"); } * { font-family: basefont; } ボディ <p>ABCDEFGHIJKLMNOPQRSTUVWXYZ</p>
myfont.ttf で定義された形で表示されます。
スタイルシートファイルや style 要素の先頭に記述し、他の読み込むべきスタイルシートファイルを指定します。
他のスタイルシートファイルを読み込む。
スタイルシートファイル名 | 説明 |
---|---|
url(アドレス) | スタイルシートファイルのアドレス |
"アドレス" | スタイルシートファイルのアドレス |
* { color: green; }
スタイルシート @import url(type-a.css); ボディ <p>緑の文字列</p>
@import で読み込むよう指定したスタイルシートのファイルに色を緑にするという記述があるので文字列が緑になります。
スタイルシートファイルを読み込む方法としては、link 要素もあります。一般に、@import よりは link 要素で記述したほうがパフォーマンスがよいとされています。
例えば、複数のスタイルシートファイルを読み込むときに、@import ではスタイルシートファイルを読み込んではじめと次に読み込むべきスタイルシートファイルが分かりますので、ファイルの読み込みは直列的(並行して読み込めない)です。それに対して、HTMLファイルに link 要素で記述してある場合は、HTMLファイルを読み込んだ時点で読み込むべきスタイルシートファイルが分かり、それらを並行して読み込むことができるからです。
アニメーションの通過点を 0%~100% の間で、また、変化の様子を プロパティ:値; で順に記述します。
途中、プロパティの記述がないものがあってても補間されます。
アニメーションの通過点をトータルに対する割合で指定する。パーセンテージ{プロパティ:値;} を 0%~100% の間で複数記述する。
パーセンテージ | 説明 |
---|---|
from | 開始時(0% と同じ) |
to | 終了時(100% と同じ) |
数値% | 開始からのパーセンテージ |
スタイルシート @keyframes changeColors { from {color:green;} 50% {color:red;} to {color:green;} } p { color: green; animation: changeColors 5s; } ボディ <p>緑の文字列(?)</p>
p 要素の文字色は、最初は緑ですが、5秒間で緑から赤そしてまた緑に変わるようにアニメーションします。
メディアタイプを指定してスタイルを適用します。複数のメディアに同じスタイルを適用する場合には、メディアタイプをカンマで区切って指定します。
メディアタイプごとのスタイルを指定する。
メディアタイプ | 説明 |
---|---|
all | すべてのデバイス |
印刷されたものや印刷プレビュー | |
screen | 主に、カラーのコンピュータ画面 |
speech | スピーチ・シンセサイザ |
スタイルシート @media screen { p { color:green; } } @media print { p { color:red; } } ボディ <p>画面では緑、プレビューでは赤</p>
ディスプレイでそのまま見ると緑ですが、印刷やプレビューでみると赤の文字列になります。
(プレビューで、文字列が赤くなっていることを確認するには、プリンターを「PDF として保存」などを選んでみてください。)
印刷時のページのスタイルを適用します。
選択子ごとのスタイルを指定する。選択子はコンマ区切りで複数指定できる。
選択子 | 説明 |
---|---|
(省略) | すべてのページ |
:first | 最初のページ |
:right | 製本時の右側ページ |
:left | 製本時の左側ページ |
スタイルシート
@page { margin-top: 5cm; margin-bottom: 10cm; }
@page :first { margin-left: 4cm; font-size:24pt;color:blue;}
@page :right { margin-left: 10cm; font-size:18pt;font-family:self;color:red;}
@page :left { margin-right: 10cm; font-size:9pt;font-family:sans-self;color:green;}
別画面で、プレビューを表示して確認してください。
(色が変わっていることを確認するには、プリンターを「PDF として保存」などを選んでみてください。)
ブラウザが CSS の属性や値をサポートしているかいないかにより、処理を振り分けます。
CSS の属性や値をサポートしているかいないかにより、処理を振り分ける。
スタイルシート @supports ( color: transparent ) { p.a { color:green; } } @supports not ( color: xxxxx ) { p.b { color:red; } } ボディ <p class="a">サポートしていたら 緑</p> <p class="b">サポートしていなかったら 赤</p>
サポートしていたら 緑、していなかったら 赤の文字列になります。color 属性には transparent がありますが、xxxxx はありません。
通常のフォントは単色ですが、カラーフォントは複数のカラーパレットを持っていて、カラーパレットを指定することによって色を変えることができます。また、カラーパレットを選択して、そこで使用されている色を変更することもできます。
カラーフォントとカラーパレットを指定して、カラーパレット名と結びつける。
カラーパレット名は CSS変数 なので -- から始まる必要がある。また、記述子 と 値 は複数指定できる。
記述子 | 値 | 説明 | ||||
---|---|---|---|---|---|---|
font-family | フォント名 | font-family で指定可能な名前を指定する | ||||
base-palette | 定義済パレット番号 | 使用するカラーパレット(0 ~)(カラーフォントによって定義済パレットの数は異なる) | ||||
override-colors | 色番号 色 | 定義済パレットで使用している色番号に対応する色を変更する(カンマ区切りで複数指定できる)
|
スタイルシート @font-face { font-family: Nabla; src: url(/fonts/Nabla-Regular.ttf); } @font-palette-values --Nabla-1 { font-family: Nabla; base-palette: 1; } @font-palette-values --Nabla-5 { font-family: Nabla; base-palette: 5; } @font-palette-values --Nabla-5x { font-family: Nabla; base-palette: 5; override-colors: 1 red, 3 yellow, 5 green, 6 orange; } span { font-family: Nabla; font-size: 18pt; } ボディ <span style="font-palette: --Nabla-1;">font-palette-values</span> <span style="font-palette: --Nabla-5;">font-palette-values</span> <span style="font-palette: --Nabla-5x;">font-palette-values</span>
上の2行はそれぞれ定義済パレットの 1 と 5 で表示しています。
最後の行は定義済パレット 5 の色を変更して表示しています。
最も基本的な CSS の使用例を以下に示します。
<!DOCTYPE html> <html> <head> <title>サンプル</title> <style type="text/css"> p{color:blue;} </style> </head> <body> <h3>竹取物語</h3> <p>今は昔、竹取の翁といふものありけり</p> <p>野山にまじりて竹を取りつつ、よろづのことに使ひけり</p> </body> </html>
<style>~</style> の間に、どの部分に対してどのスタイルをどのように適用するかを指定しています。この例では、p 要素の色を青くするスタイルを指定しています。
p{color:blue;}
CSS では、半角スペース、タブ、改行はスタイルに影響しませんので、次のように記述しても全く同じ意味です。また、HTML では大文字と小文字の区別もしませんので、大文字で記述しても構いません。しかし、小文字で記述されていることの方が多いと思います。
p { color: blue; }
CSS の一般的な形式は次のようになります。
セレクタ { プロパティ名: 値; }
セレクタとは、スタイルシートを適用する対象のことです。セレクタには、必要に応じて下の表のように記述することができます。
この中で E は要素(タグ)を、class はクラス名を、id は ID を、attr は属性を、"val" は属性値を、"str" は任意の文字列を表しています。
なお、E だけの場合はもちろん省略できませんが、それ以外の例えば E.class のようなときは E を省略できます。この場合はすべての要素が対象になります。
なお、これらのセレクタは組み合わせて使用することができます。
たとえば、
div[id][class^="x"] id 属性と x から始まるクラス名を持つ div 要素 div:not([title]):last-child title 属性を持たず、なおかつ最後の div 要素(title 属性を持たない最後の div 要素ではない)
すべての要素が対象になります。
スタイルシート *{color:blue;} ボディ <h3>はじまり</h3> <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
全ての文字が青になります。
E 要素のみが対象になります。
スタイルシート time{color:blue;} ボディ <h3>はじまり</h3> <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
time 要素の文字色が青になります。
指定されたクラス名が値の class 属性を持つすべての E 要素が対象になります。要素(タグ)名なしの .class ではすべての要素が対象になります。
スタイルシート p.notice{color:blue;} ボディ <h3>はじまり</h3> <p class="notice">私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time class="notice">16:00</time>を表示していた。</p>
p 要素の内クラス名の一致するものだけが、文字色が青になります。
time 要素も同じクラス名がありますが、文字色は青にはなりません(time 要素の notice クラスの定義はないので間違った記述です)。
指定された ID の要素が対象になります。ID はひとつの文書内で重複して付けられませんので、要素(タグ)名なしの #ID でも同じです。
スタイルシート p#bb{color:blue;} ボディ <h3>はじまり</h3> <p id="aa">私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p id="bb">デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
ID の一致する要素の文字色が青になります。
この例ではスタイルシートで要素名も p と指定されていますので、もし h3 要素に bb という ID が付けられていたとしても、文字色は青にはなりません。
attr 属性を持つ E 要素が対象になります。
スタイルシート time[datetime]{color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
datetime 属性を持つ time 要素の文字色が青になります。
attr 属性の値が val である E 要素が対象になります。
スタイルシート time[datetime="2001-01-07"]{color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time datetime="2001-01-07 16:00">16:00</time>を表示していた。</p>
属性値が "2001-01-07" の datetime 属性を持つ time 要素の文字色が青になります。
属性値の一つが val である attr 属性を持つ E 要素が対象になります。
スタイルシート time[datetime~="16:00"]{color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time datetime="2001-01-07 16:00">16:00</time>を表示していた。</p>
属性値の一部が "16:00" である datetime 属性を持つ time 要素の文字色が青になります。
属性値が str で始まる attr 属性を持つ E 要素が対象になります。
スタイルシート time[datetime^="2"]{color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time datetime="2001-01-07 16:00">16:00</time>を表示していた。</p>
属性値が "2" で始まる datetime 属性を持つ time 要素の文字色が青になります。
属性値が str で終わる attr 属性を持つ E 要素が対象になります。
スタイルシート time[datetime$="00"]{color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time datetime="2001-01-07 16:00">16:00</time>を表示していた。</p>
属性値が "00" で終わる datetime 属性を持つ time 要素の文字色が青になります。
属性値に str を含む attr 属性を持つ E 要素が対象になります。
スタイルシート time[datetime*="07"]{color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time datetime="2001-01-07 16:00">16:00</time>を表示していた。</p>
属性値が "07" を含む datetime 属性を持つ time 要素の文字色が青になります。
属性値が str か、str- で始まる attr 属性を持つ E 要素が対象になります。
スタイルシート time[datetime|="2001-01"]{color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time datetime="2001-01-07 16:00">16:00</time>を表示していた。</p>
属性値が "2001-01" で始まる datetime 属性を持つ time 要素の文字色が青になります。
文書のルート要素が対象になります。HTML文書の場合、常に html 要素となります。
スタイルシート :root{color:blue;} ボディ <table border="1"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> <tr><th rowspan="4">四国</th><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td>4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td>高知県</td><td>高知</td><td>7,105.16</td></tr> </table>
html 要素(つまり、すべて)の文字の色が青になります。
では、線にも色が付くようです。
内容が空である E 要素が対象になります。
スタイルシート td:empty{background-color:yellow;} ボディ <table border="1"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> <tr><th rowspan="4">四国</th><td>香川県</td><td></td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td></td></tr> <tr><td></td><td>松山</td><td>5,678.18</td></tr> <tr><td>高知県</td><td>高知</td><td>7,105.16</td></tr> </table>
<td>~</td> の内容に記述がない部分の背景色が黄色になります。
親要素から見て、N 番目の子要素が E 要素のとき対象になります。N 番目の E 要素ではありません。N には次のようなものが指定できます。
ただし、最初の要素が1番目ですので注意してください。
N | 説明 |
---|---|
n | すべて |
an±b | a の倍数±b (例 3n+1:3つ置き) |
odd | 奇数 (2n+1 と同じ) |
even | 偶数 (2n と同じ) |
整数 | (指定された数値)番目 (1~) |
また、nth-child(N) の対象はあくまで前から N 番目の子要素です。.class、#ID、[attr] などが指定されていたとしても、それらによって絞り込まれた子要素の前から数えた N 番目ではありません。
スタイルシート tr:nth-child(even){color:blue;} td:nth-child(1){background-color:yellow;} td.x:nth-child(2){background-color:pink;} ボディ <table border="1"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> <tr><th rowspan="4">四国</th><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td class="x">徳島</td><td>4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td>高知県</td><td class="x">高知</td><td class="x">7,105.16</td></tr> </table>
偶数番目の要素が tr のとき文字色が青になります("四国" は2行目にあるカラムなので青になります)。また、各行の1番目の要素が td のとき背景色が黄色になります(1~2行目は1番目の要素が th なので、背景色は変わりません)。
3つ目の例は注意が必要です。td.x:nth-child(2) は、class="x" が記述された td 要素の、前から2番目が対象ではありません。2番目の子要素が td 要素に class="x" が記述されていた場合が対象になります。
親要素から見て、後ろから N 番目の子要素が E 要素のとき対象になります。後ろから N 番目の E 要素ではありません。N には次のようなものが指定できます。
ただし、最初の要素が1番目ですので注意してください。
N | 説明 |
---|---|
n | すべて |
an±b | a の倍数±b (例 3n+1:3つ置き) |
odd | 奇数 (2n+1 と同じ) |
even | 偶数 (2n と同じ) |
整数 | (指定された数値)番目 (1~) |
また、nth-last-child(N) の対象はあくまで後ろから N 番目の子要素です。.class、#ID、[attr] などが指定されていたとしても、それらによって絞り込まれた子要素の後ろから数えた N 番目ではありません。
スタイルシート tr:nth-last-child(odd){background-color:yellow;} td:nth-last-child(3){color:blue;} td.x:nth-last-child(2){background-color:pink;} ボディ <table border="1"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> <tr><td rowspan="4">四国</td><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td class="x">4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td class="x">高知県</td><td class="x">高知</td><td>7,105.16</td></tr> </table>
後ろから奇数番目の要素が tr のとき背景色が黄色になります。また、各行の後ろから3カラム目の要素が td のとき文字色が青になります(1行目は th なので、文字色は変わりません)。
また、"四国" は2行目にあるカラムなので背景色は変わりません。
3つ目の例は注意が必要です。td.x:nth-last-child(2) は、class="x" が記述された td 要素の、後ろから2番目が対象ではありません。後ろから2番目の子要素が td 要素に class="x" が記述されていた場合が対象になります。
親要素から見て、最初の子要素が E 要素のとき対象になります(最初の子要素が E 要素でなければ対象外です)。
また、first-child の対象はあくまで前から1番目の子要素です。.class、#ID、[attr] などが指定されていたとしても、それらによって絞り込まれた E 要素の前から数えた1番目ではありません。
スタイルシート tr:first-child{background-color:yellow;} td:first-child{color:blue;} td.x:first-child{background-color:pink;} ボディ <table border="1"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> <tr><td rowspan="4">四国</td><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td>4,146.67</td></tr> <tr><td class="x">愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td>高知県</td><td class="x">高知</td><td>7,105.16</td></tr> </table>
最初の行(tr)の背景色が黄色に、各行の最初のカラム(td)の文字色が青になります(1行目は th なので、文字色は変わりません)。
また、2行目は "四国" が最初のカラムなので "香川県" ではなく "四国" の文字色が変わります。
3つ目の例は注意が必要です。td.x:first-child は、class="x" が記述された td 要素の、前から1番目が対象ではありません。前から1番目の子要素が td 要素に class="x" が記述されていた場合が対象になります。
親要素から見て、最後の子要素が E 要素のとき対象になります(最後の子要素が E 要素でなければ対象外です)。
また、last-child の対象はあくまで後ろから1番目の子要素です。.class、#ID、[attr] などが指定されていたとしても、それらによって絞り込まれた E 要素の後ろから数えた1番目ではありません。
スタイルシート tr:last-child{background-color:yellow;} td:last-child{color:blue;} td.x:last-child{color:blue;} ボディ <table border="1"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> <tr><td rowspan="4">四国</td><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td>4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td class="x">5,678.18</td></tr> <tr><td>高知県</td><td class="x">高知</td><td>7,105.16</td></tr> </table>
最後の行(tr)の背景色が黄色に、各行の最後のカラム(td)の文字色が青になります(1行目は th なので、文字色は変わりません)。
3つ目の例は注意が必要です。td.x:last-child は、class="x" が記述された td 要素の、後ろから1番目が対象ではありません。後ろから1番目の子要素が td 要素に class="x" が記述されていた場合が対象になります。
親要素から見て、唯一の子要素が E 要素のとき対象になります。
スタイルシート tr:only-child{background-color:yellow;} ボディ <table border="1"> <thead title="タイトル"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> </thead> <tr><td rowspan="4">四国</td><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td>4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td>高知県</td><td>高知</td><td>7,105.16</td></tr> </table>
tr はいくつもありますが、親要素の中に唯一なのは thead の中の tr のみです。したがって、thead の中の tr の背景色が黄色になります。
親要素から見て、N 番目の E 要素が対象になります。N には次のようなものが指定できます。
ただし、最初の要素が1番目ですので注意してください。
N | 説明 |
---|---|
n | すべて |
an±b | a の倍数±b (例 3n+1:3つ置き) |
odd | 奇数 (2n+1 と同じ) |
even | 偶数 (2n と同じ) |
整数 | (指定された数値)番目 (1~) |
また、nth-of-type(N) の対象はあくまで前から N 番目の E 要素です。.class、#ID、[attr] などが指定されていたとしても、それらによって絞り込まれた E 要素の前から数えた N 番目ではありません。
スタイルシート tr:nth-of-type(even){color:blue;} td:nth-of-type(1){background-color:yellow;} ボディ <table border="1"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> <tr><th rowspan="4">四国</th><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td class="x">徳島</td><td>4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td>高知県</td><td class="x">高知</td><td class="x">7,105.16</td></tr> </table>
偶数番目の tr 要素の文字色が青になります("四国" は2行目にあるカラムなので青になります)。、各行の1番目の td 要素の背景色が黄色になります(1行目は th なので背景色は変わりません。また、2行目は"四国" が th なので、"香川県" が1番目の td になりますので、背景色が変わります)。
3つ目の例は注意が必要です。td.x:nth-of-type(2) は、class="x" が記述された td 要素の、前から2番目が対象ではありません。2番目の td 要素に class="x" が記述されていた場合が対象になります。
親要素から見て、後ろから N 番目の E 要素が対象になります。N には次のようなものが指定できます。
ただし、最初の要素が1番目ですので注意してください。
N | 説明 |
---|---|
n | すべて |
an±b | a の倍数±b |
odd | 奇数 |
even | 偶数 |
整数 | (指定された数値)番目 (1~) |
また、nth-last-of-type(N) の対象はあくまで後ろから N 番目の E 要素です。.class、#ID、[attr] などが指定されていたとしても、それらによって絞り込まれた E 要素の後ろから数えた N 番目ではありません。
スタイルシート tr:nth-last-of-type(odd){background-color:yellow;} td:nth-last-of-type(3){color:blue;} td.x:nth-last-of-type(2){background-color:pink;} ボディ <table border="1"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> <tr><td rowspan="4">四国</td><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td class="x">徳島</td><td>4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td class="x">高知県</td><td class="x">高知</td><td>7,105.16</td></tr> </table>
後ろから奇数番目の tr 要素の背景色が黄色になります("四国" は2行目にあるカラムなので背景色は変わりません)。各行の後ろから3カラム目の td 要素の文字色が青になります(1行目は th なので、文字色は変わりません)。
3つ目の例は注意が必要です。td.x:nth-last-of-type(2) は、class="x" が記述された td 要素の、後ろから2番目が対象ではありません。後ろから数えて2番目の td 要素に class="x" が記述されていた場合が対象になります。
親要素から見て、子要素の内最初の E 要素が対象になります。
また、first-child の対象はあくまで前から1番目の E 要素です。.class、#ID、[attr] などが指定されていたとしても、それらによって絞り込まれた E 要素の前から数えた1番目ではありません。
スタイルシート td:first-of-type{color:blue;} tr:first-of-type{background-color:yellow} td.x:first-of-type{background-color:pink} ボディ <table border="1"> <thead title="タイトル"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> </thead> <tr><th rowspan="4">四国</th><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td>4,146.67</td></tr> <tr><td class="x">愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td>高知県</td><td class="x">高知</td><td>7,105.16</td></tr> </table>
したがって、親要素(tr)の最初の td 要素である "香川県"、"徳島県" などの文字色が青になります。
また、親要素(thead)の最初の tr 要素である1行目と table 要素の最初の tr 要素である2行目("香川県" の行)の背景色が黄色になります("四国" も2行目の1カラム目なので背景色が黄色になります)。
3つ目の例は注意が必要です。td.x:first-of-type は、class="x" が記述された td 要素の、前から1番目が対象ではありません。前から1番目の td 要素に class="x" が記述されていた場合が対象になります。
親要素から見て、子要素の内最後の E 要素が対象になります。
また、last-of-type の対象はあくまで後ろから1番目の E 要素です。.class、#ID、[attr] などが指定されていたとしても、それらによって絞り込まれた E 要素の後ろから数えた1番目ではありません。
スタイルシート td:last-of-type{color:blue;} tr:last-of-type{background-color:yellow} td.x:last-of-type{background-color:pink;} ボディ <table border="1"> <thead title="タイトル"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> </thead> <tr><th rowspan="4">四国</th><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td>4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td class="x">5,678.18</td></tr> <tr><td>高知県</td><td class="x">高知</td><td>7,105.16</td></tr> </table>
親要素(tr)の最後の td 要素である "1,876.53"、"4,146.67" などの文字色が青になります("面積(km2)" は th 要素なので文字色は変わりません)。
また、親要素(thead)の最後の tr 要素である1行目と table 要素の最後の tr 要素である5行目("高知県" の行)の背景色が黄色になります("四国" は2行目の1カラム目なので背景色は変わりません)。
3つ目の例は注意が必要です。td.x:last-of-type は、class="x" が記述された td 要素の、後ろから1番目が対象ではありません。後ろから1番目の td 要素に class="x" が記述されていた場合が対象になります。
親要素から見て、子要素としての E 要素が一つだけの場合、その要素が対象になります。
スタイルシート th:only-of-type{color:blue;} tr:only-of-type{background-color:yellow} ボディ <table border="1"> <thead title="タイトル"> <tr><th> </th><th>県名</th><th>県庁所在地</th><th>面積(km<sup>2</sup>)</th></tr> </thead> <tr><th rowspan="4">四国</th><td>香川県</td><td>高松</td><td>1,876.53</td></tr> <tr><td>徳島県</td><td>徳島</td><td>4,146.67</td></tr> <tr><td>愛媛県</td><td>松山</td><td>5,678.18</td></tr> <tr><td>高知県</td><td>高知</td><td>7,105.16</td></tr> </table>
th 要素を子要素として一つだけ持つ親要素は2行目の tr 要素なので、その子要素の th 要素である "四国" の文字色が青になります。
また、tr 要素を子要素として一つだけ持つ親要素は thead 要素なので、その子要素の tr 要素である1行目の背景色が黄色になります。
未訪問リンクのスタイルを指定します。
スタイルシート a:link {color:green;} ボディ <p><a href="#">未訪問リンク</a></p>
まだクリックしていないときの文字色が緑になります。
なお、この例ではクリックしてもリンク先に変わらないようにしています。
訪問済みリンクのスタイルを指定します。
スタイルシート a:visited {color:lightgrey;} ボディ <p><a href="#">訪問済みリンク</a></p>
クリックすると文字色がグレイになります。
マウスでクリックしている最中のような、アクティブな状態のスタイルを指定します。
スタイルシート span.hilite:active {background-color:red;} ボディ <p>この文章の<span>特定の場所</span>をクリック(<span class="hilite">ボタン</span>は押したまま)すると、<span>背景色</span>が赤くなります。</p>
クラス名が hilite の span 要素をクリックしてボタンを離さないままにしていると、背景色が赤になります。
要素にカーソルなどが乗った状態のスタイルを指定します。
スタイルシート span.hilite:hover {background-color:yellow;} ボディ <p><span>特定の場所</span>に<span class="hilite">マウスポインター</span>を乗せると、<span>背景色</span>が黄色くなります。</p>
クラス名が hilite の span 要素の上にマウスポインターを乗せると、背景色が黄色になります。
リンクのターゲット先となる E 要素のスタイルを指定します。
スタイルシート .note1:target {background-color:blue;color:white;} .note2:target {background-color:yellow;} .note3:target {background-color:red;color:white;} ボディ <p><span id="t1" class="note1">blue</span> <span id="t2" class="note2">yellow</span> <span id="t3" class="note3">red</span></p> <p><a href="#t1">青</a> <a href="#t2">黄</a> <a href="#t3">赤</a></p>
クリックするとターゲット先の背景に色がつきます。
フォーカスがあてられている状態のスタイルを指定します。
スタイルシート input:focus {background-color:yellow;} ボディ <form method="post" action="input.cgi"> <label>氏名:<input type="text" name="name"></label><br> 性別: <label><input type="radio" name="gender" value="male"> 男</label> <label><input type="radio" name="gender" value="female"> 女</label> <br><br> 所持品: <label><input type="checkbox" name="prop" value="CellPhone" checked="checked"> スマフォ</label> <label><input type="checkbox" name="prop" value="Car"> 自動車</label> <label><input type="checkbox" name="prop" value="Cottage"> 別荘</label> <br> <label>好きな果物: <select name="fruits"> <option>りんご</option> <option>みかん</option> <option selected="selected">バナナ</option> <option>パイナップル</option> </select></label> <br><br> <textarea name="freeans" rows="4" cols="40" placeholder="自由に意見を記述してください"></textarea> <br><br><input type="submit" value="送信"> <input type="reset" value="取り消し"> </form>
フォーカスがあてられている(マウスをクリックする、タブキーで移動するなどして、入力対象となっている)input 要素の背景色が黄色になります。
ただし、input 要素の type が text の文字列入力欄や submit などのボタンしか背景色は変わらないようです。
なお、この例ではボタンをクリックしても何も起きないようにしています。
特定の言語 L を指定されている E 要素のスタイルを指定します。
言語については、言語コード一覧を参照してください。
スタイルシート q:lang(en) {color:blue;} ボディ <p lang="ja"><q>こんにちは</q>は日本語だけど、<q lang="en">Hello</q>は英語です。</p>
言語として en が指定されている q 要素の文字色が青になります。
フォームにおいて入力可能に設定されている E 要素のスタイルを指定します。
スタイルシート input:enabled {background-color:yellow;} input[type="checkbox"]:enabled {outline: solid 2px blue;} ボディ <form action="#"> 入力欄:<input type="text" name="param" value="初期値" disabled><br> 選択欄:<input type="checkbox" name="data" value="1" checked>チェック1 <input type="checkbox" name="data" value="2">チェック2 <input type="checkbox" name="data" value="3" disabled>チェック3<br> ボタン:<input type="submit" value="送信"> <input type="reset" value="中止" disabled> </form>
ボタンを含めて、入力可能な input 要素の背景色が黄色になります。ただし、チェックボックスの背景色は変わらないようです。
別途、チェックボックスは枠を青くしています。
フォームにおいて入力不可に設定されている E 要素のスタイルを指定します。
スタイルシート input:disabled {background-color:darkgray;} input[type="checkbox"]:disabled {outline: solid 2px gray;} ボディ <form action="#"> 入力欄:<input type="text" name="param" value="初期値" disabled><br> 選択欄:<input type="checkbox" name="data" value="1" checked>チェック1 <input type="checkbox" name="data" value="2">チェック2 <input type="checkbox" name="data" value="3" disabled>チェック3<br> ボタン:<input type="submit" value="送信"> <input type="reset" value="中止" disabled> </form>
ボタンを含めて、入力不可な input 要素の背景色が濃いグレイになります。ただし、チェックボックスの背景色は変わらないようです。
別途、チェックボックスは枠をグレイにしています。
フォームにおいてチェック状態の E 要素(チェックボックスやラジオボタン)のスタイルを指定します。
スタイルシート input:checked {outline: solid 3px red;} ボディ <form action="#"> 入力欄:<input type="text" name="param" value="初期値" disabled><br> 選択欄:<input type="checkbox" name="data" value="1" checked>チェック1 <input type="checkbox" name="data" value="2">チェック2 <input type="checkbox" name="data" value="3" disabled>チェック3<br> ボタン:<input type="submit" value="送信"> <input type="reset" value="中止" disabled> </form>
チェック状態の input 要素の枠が赤になります。
E 要素の最初の行のスタイルを指定します。
ただし、フレージング・コンテンツに分類される要素には無効のようです。
スタイルシート p::first-line {color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、<br>ちょうど<time>16:00</time>を表示していた。</p>
表示幅を狭くし、最初の文章は無理矢理に次の行に続くようにさせています。2つ目の文章は途中に改行(<br>)を入れて2行に分けています。ともに、1行目の文字色が青になっています。
E 要素の最初の文字のスタイルを指定します。
ただし、フレージング・コンテンツに分類される要素には無効のようです。
スタイルシート ::first-letter {color:red;} ボディ <h3>はじまり</h3> <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、<br>ちょうど<time>16:00</time>を表示していた。</p>
要素内の最初の文字色が赤になっています。改行後の文字は最初の文字とはみなされません。
ブラウザやフォントによっては、f と i や f が隣り合う場合、i の点が f の上部と結合されるなどして1文字のように合字され表示されることがあります。
例えば、最初の文字が fi だとすると、fi が1文字として扱われるため、::first-letter は f だけではなく、fi を対象としてしまうことがあります。
f と i などを合字するかどうかは、font-variant-ligatures で指定することができます。
は、fi が1文字として扱われていても f だけを対象としているようです。
E 要素の内容の前に挿入する文字列や画像、そしてそのスタイルを指定します。挿入する文字列や画像などは content 要素で指定します。
content には以下のような値を指定します。空白で区切れば複数指定することもできます。
値 | 説明 |
---|---|
"文字列" | 文字列を " や ' で囲んで指定する ただし、★ などのように記述するとそのまま表示されてしまうので、\2605(&#x を \ にして、; をとる)のように記述する |
URL(URL) | 画像や音声等のファイルの URL を指定する |
counter(カウンタ名) counters(カウンタ名, 区切り文字) | counter-increment で指定したカウンタ名を記述する 階層が深い場合には counters を使用する |
attr(属性名) | 指定した属性の値が表示される |
open-quote、close-quote | 開始引用符と終了引用符(quotes で指定されている引用符が階層に応じて挿入される) |
no-open-quote、no-close-quote | 表示されない開始引用符と終了引用符(階層は深くなるので、quotes で指定されている引用符は変わる) |
スタイルシート time::before {content:open-quote url("clock.png") attr(datetime) close-quote;color:red;} p {counter-increment: a;} p::before {content: "(" counter(a) ") ";} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
time 要素内の先頭に赤色で引用符で囲んで clock.png の画像を挿入しています。また、time 要素に datetime 属性がある場合はその値も表示しています。
また、p 要素にはカウンターが設定されていますので、順に番号が付けられています。
カウンターが階層になっている場合には、counters() を使用します。
スタイルシート ol {counter-reset: s; list-style-type: none;} li {counter-increment: s;} li::before {content: counters(s, ".") " ";} ボディ <ol> <li>item</li> <li>item <ol> <li>item</li> <li>item <ol> <li>item</li> <li>item</li> <li>item</li> </ol> </li> <li>item</li> </ol> </li> <li>item</li> </ol>
counter-reset はカウンタを 0 にしますので、ol 要素ごとに 0 になります。ただし、"." を付加されて階層が深くなります。
li 要素の counter-increment でカウンタに 1 加算されます。そして、li 要素内の先頭に表示されます。
E 要素の内容の後ろに挿入する文字列や画像など、そしてそのスタイルを指定します。挿入する文字列や画像などは content(E::before を参照)で指定します。
スタイルシート time::before {content:"≪";} time::after {content:"≫";} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
time 要素内の前後に "≪≫" を挿入しています。
S で指定するセレクタに当てはまらない E 要素のスタイルを指定します。
スタイルシート time:not([datetime]) {color:blue;} ボディ <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
datetime 属性を持たない time 要素の文字色が青になります。
セレクタを演算子で結合することによって、さらに対象を限定することができます。
結合子 | 名称 | 説明 |
---|---|---|
S1 S2 | 子孫セレクタ | S1 要素の子孫となる S2 要素 |
S1 > S2 | 子セレクタ | S1 要素の子となる S2 要素 |
S1 + S2 | 隣接兄弟セレクタ | S1 要素の直後に隣接している S2 要素 |
S1 ~ S2 | 兄弟セレクタ | S1 要素の後ろにある同じ階層の S2 要素 |
S1 , S2 | 複数のセレクタに同じスタイルを適用する |
S1 要素の子孫として出現する S2 要素が対象になります。階層は深くても構いません。子孫セレクタとも呼ばれます。
スタイルシート p span time{color:blue;} ボディ <h3>はじまり</h3> <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、<span><em>ちょうど<time>16:00</time></em>を表示</span>していた。</p>
p 要素内のさらに span 要素内の time 要素の文字色が青になります。なお、span 要素の直下になくても、span 要素内の別の要素の中にある time 要素も対象になります。
S1 要素の子として出現する S2 要素が対象になります。直下である必要があります。子セレクタとも呼ばれます。
スタイルシート p > time{color:blue;} ボディ <h3>はじまり</h3> <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、<span>ちょうど<time>16:00</time>を表示</span>していた。</p>
p 要素内直下に記述されている time 要素の文字色が青になります。
2つ目の time 要素は p 要素直下ではありませんので、青くなりません。
S1 要素の直後に出現する S2 要素が対象になります。隣接兄弟セレクタとも呼ばれます。
スタイルシート h3 + p{color:blue;} ボディ <h3>はじまり</h3> <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
h3 要素の直後に記述されている p 要素の文字色が青になります。
2つ目の p 要素は h3 要素の直後ではありませんので、青くなりません。
S1 要素の後に S1 要素と同じ階層で出現する S2 要素が対象になります。兄弟セレクタとも呼ばれます。
スタイルシート h3 ~ p{color:blue;} ボディ <p>実は...</p> <h3>はじまり</h3> <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
h3 要素の後に記述されている p 要素の文字色が青になります。
1つ目の p 要素は h3 要素の後ではありませんので(前なので)、青くなりません。
S1 要素 と S2 要素が対象になります。いくつ記述しても構いません。
スタイルシート h3, time[datetime]{color:blue;} ボディ <h3>はじまり</h3> <p>私たちが初めて会ったのは、<time datetime="2001-01-07">21世紀に入った最初の日曜日</time>だった。</p> <p>デジタル時計は、ちょうど<time>16:00</time>を表示していた。</p>
h3 要素と datetime 属性を持つ time 要素の文字色が青になります。
CSS の一般的な形式は次のようになります。セレクタ で指定された要素のスタイルを変更するためには、変更するプロパティの名前とその値を指定します。
セレクタ { プロパティ名: 値; }
複数のプロパティを変更する場合はセミコロン(;)で区切ります。
p { font-size:12pt; color:blue; }
プロパティによって、値が一つのものもあれば複数のものもあります。値が複数ある場合は空白で区切ります。値に空白が含まれる場合は値を ' や " で囲みます。
p { border:solid 1px blue; font-face:'Times New Roman'; }
/* と */ の間はコメントになります。/* と */ は多重に囲むことはできません。
p.note {color: blue;} /* 注釈 */
CSS の指定方法には下記のようなものがあります。優先順位の高い順に紹介します。もし同じ要素の同じ属性に異なる値が指定されている場合は、優先順位の高いものが採用されます。
要素ごとに style 属性で指定します。スタイルシートの影響は style 属性が記述してある要素だけです。
<p style="color:green;">緑の文字列</p> <p style="color:red;">赤の文字列</p>
<style>~</style> で、文書全体のスタイルを指定することができます。
<!DOCTYPE html> <html> <head> <style> p.note {color:green;} </style> </head> <body> <p class="note">緑の文字列</p> </body> </html>
link 要素により、外部の CSS ファイル(sample.css)を読み込むことができます。外部 CSS ファイルを用いることで、複数の HTML文書で共通のスタイルシートを共有することができます。
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="sample.css"> </head> <body> <p class="note">緑の文字列</p> </body> </html>
p.note {color:green;}
CSS ファイルや style 要素の先頭に @import を記述して、他の CSS ファイル(sample.css)を読み込むことができます。外部 CSS ファイルを用いることで、複数の HTML文書で共通のスタイルシートを共有することができます。
ただし、CSS ファイルの読み込みは link 要素より時間がかかります。
<!DOCTYPE html> <html> <head> <style> @import url(sample2.css); </style> </head> <body> <p class="note">緑の文字列</p> </body> </html>
@import url("sample.css"); p.note {font-size:12pt;}
スタイルシートの指定方法は「2.4 CSS3 の指定方法」のように何通りかあります。このとき、同じ要素の同じ属性に異なる値が指定されている場合は、基本的には後から指定された方が優先されます。優先順位は ①②③ になります。
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="sample.css"> ── ③ <style> p {color:blue;} ── ② </style> </head> <body> <p style="color:green;">文字列</p> ── ① </body> </html>
p {color:red;}
また、別々のスタルシートを同時に指定した場合は、 style属性、id指定、class指定、要素指定の順になります。
<!DOCTYPE html> <html> <head> <style> #n1 { color: orange; } /* id指定 */ ── ② .c1 { color: yellow; } /* class指定 */ ── ④ .c2 { color: red; } /* class指定(.c1より優先度が高い) */ ── ③ p {color:blue;} ── ⑤ </style> </head> <body> <p class="c1 c2" id="n1" style="color:green;">文字列</p> ① <p class="c1 c2" id="n1">文字列</p> <p class="c1 c2">文字列</p> <p class="c1">文字列</p> <p>文字列</p> </body> </html>
基本的には後から指定された方が優先されます。ただし、クラスの場合は class="c1 c2" の並びではなく、style 要素の中での後から定義されたものが優先されます。
スタルシートの定義のときに、! important を指定することによって、優先順位を一番にすることもできます。
<!DOCTYPE html> <html> <head> <style> #n1 { color: orange; } /* id指定 */ ── ③ .c1 { color: yellow; } /* class指定 */ ── ⑤ .c2 { color: red; } /* class指定(.c1より優先度が高い) */ ── ④ p {color:blue ! important;} /* 最優先 */ ── ① </style> </head> <body> <p class="c2 c1" id="n1" style="color:green;">文字列</p> ② </body> </html>
! important を指定されたスタルシートが一番に優先されます。
親要素(より外側に記述された要素)に指定されたスタイルの多くは、子要素(内部に記述された要素)に継承されます。
<p style="color:green;">これは<strong>緑色</strong>の文字列</p>
strong 要素には color 属性が指定されていませんが、親要素である p 要素の color 属性が継承されます。
しかし、border 属性のように継承されない属性もあります。
<p style="border:solid 1px green;">これは<strong>黒色</strong>の文字列</p>
strong 要素には border 属性が継承されていません。
こうした継承されない属性も inherit を記述することによって継承することができます。
<p style="border:solid 1px green;">これは<strong style="border:inherit;">黒色</strong>の文字列</p>
strong 要素の border 属性に inherit を指定することによって p 要素の border 属性が継承されます。