last modified 10th/Oct. 2000
殆どのブラウザでは始点アンカー(href 属性を持つ A 要素)には下線が引かれ、訪問済みのリンクと未訪問のリンクの色を変化して区別できます。
これらは CSS によって調整できます;
CSS1 での link 擬似クラスに付いて紹介します。ハイパーリンク(href 属性を持つ Anchor 要素)が訪問済みと未訪問で色が変化する「あれ」です。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <title>Link Pseudo-Element</title> <meta http-equiv="content-style-type" content="text/css"> <style type="text/css"> <!-- A:link { color: navy; text-decoration: underline } A:visited { color: maroon; text-decoration:none } A:active { color: green } --> </style> </head> <body> <p> この文書中の始点アンカーは、未訪問の場合は紺色、訪問済みの場合は栗色、 アクティブな場合は深緑色で表示されます。 </p> </body> </html>
a:link | 未訪問のリンク | 色は紺色で下線が引かれる |
---|---|---|
a:viisted | 訪問済みのリンク | 栗色で下線が引かれない |
a:active | アクティブ状態のリンク | 緑色 |
或る要素に注目し、その状態によって区別するセレクタを「疑似クラス」と呼びます。 CSS1 では href 属性を持つ A 要素(リンク)に限り疑似クラスが定義されています。
:link | 未訪問のリンク |
---|---|
:visited | 訪問済みのリンク |
:active | 作動中のリンク |
例えば、 a:active
の場合は、「 A 要素であり、且つ活動中でる状態」を取り出して、スタイルを適用します。
これらの疑似クラスは何れも相互に排他的で、例えば「 :link
且つ :active
な要素」は有り得ません。
これらはリンク要素にしか適用できない疑似クラスなので、要素名は省略しても等価です。即ち、次の二行は全く同じ処理を指定しています;
A:link { color: navy } /* :link 疑似クラスを持つ A 要素にマッチ */ :link { color: navy } /* 上に同じ */
:active | 活動中の状態 |
---|---|
:hover | カーソルなどのポインタが上に乗っている状態 |
:focus | テキスト入力、タブキー移動など、ユーザの操作対象になっている状態 |
CSS2 の疑似セレクタはどの要素にも適用でき、 p:hover
とあれば、「 P 要素であり、且つカーソルが上に乗っている状態」を取り出して、宣言されているスタイルを適用します。
:link { color: navy } /* a:link と同じ */ :visited { color: maroon } /* a:visited と同じ */ :link, :visited { text-decoration: underline } a:hover { color: purple; text-decoration: none } a:active { color: green } a:focus { color: black; font-style: italic }
:link | 未訪問のリンク | 色は紺色で下線が引かれる |
---|---|---|
:viisted | 訪問済みのリンク | 栗色で下線が引かれる |
a:hover | カーソルが上に乗った状態のリンク | 紫色で下線が引かれない |
a:active | アクティブ状態のリンク | 緑色 |
a:focus | フォーカスされているリンク | 黒色でフォントが斜体 |
CSS2 では、 CSS1 で既に定義されていた :active
疑似クラスが再定義された他、 :hover
と :focus
が追加されました。殆どのブラウザは :focus
状態と :active
状態を区別せず、 :active
に対するスタイルを適用します。
:hover, :focus, :active
は何れも相互に相補的であり、排他的では有りません。従って、「:hover
であり且つ :active
な要素」が存在し得ます。従って、スタイルの継承が通常の規則通りに適用されますので、記述する順番が重要になります;
上の例で、 a:hover
が a:visited
, a:link
よりも前に記述されると、 a:hover
のスタイルは上書きされてしまいます。また、 a:active
が a:hover
よりも後ろに記述されている為、リンクにカーソルが乗っていてもスタイルは a:active
のものが適用されます。