[4] [DFN[[CODE(CSS)@en[:link]]]] [[擬似クラス]]は、未訪問の[[リンク]]を表します [SRC[>>3]]。 [DFN[[CODE(CSS)@en[:visited]]]] [[擬似クラス]]は、訪問済みの[[リンク]]を表します [SRC[>>3]]。 * 仕様書 [REFS[ - [3] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) - [29] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) ]REFS] * 意味 [5] [CODE(CSS)@en[[[:link]]]] は未訪問の[[リンク]]を表し、 [CODE(CSS)@en[[[:visited]]]] が訪問済みの[[リンク]]を表します。両者は互いに排他的です。 [[利用者エージェント]]は訪問してから十分時間が経った[[リンク]]を未訪問扱いとして構いません。 また両者を区別することにより[[利用者]]の許諾なく訪問済み如何を[[著者]]が判定できてしまうため、 すべてを未訪問の[[リンク]]として扱うなどの方法をとって、かつ両者を区別して[[レンダリング]]したりしても構いません。 [SRC[>>3]] * ハイパーリンク始点アンカー [15] これらの[[擬似クラス]]は[RUBYB[[[ハイパーリンク始点アンカー]]]@en[hyperlink source anchor]]に適用されます。 ;; [16] ということが [[CSS2]] では明記されていません。また [[Selectors3]] では言及すらされていません・・・。 [17] 何が[[ハイパーリンク始点アンカー]]であるかは[[文書言語]]によります [SRC[>>14]]。 ** HTML [30] [[HTML]] では次の[[要素]]が [CODE(CSS)@en[[[:link]]]], [CODE(CSS)@en[[[:visited]]]] のいずれかに[[一致]]しなければ[['''なりません''']] [SRC[>>29]]。 - [CODE(HTMLe)@en[[[a]]]] [[要素]]で [CODE(HTMLa)@en[[[href]]]] [[属性]]のあるもの - [CODE(HTMLe)@en[[[area]]]] [[要素]]で [CODE(HTMLa)@en[[[href]]]] [[属性]]のあるもの - [CODE(HTMLe)@en[[[link]]]] [[要素]]で [CODE(HTMLa)@en[[[href]]]] [[属性]]のあるもの ** XLink [18] [[XLink]] では[[探索]]が可能な[[局所要素]]であって [CODE(XMLa)@en[[[actuate]]]] が [CODE(XML)@en[[[onRequest]]]] であるかのように扱われるものが[[ハイパーリンク始点アンカー]]として扱われるべきだと提案されています [SRC[>>1]]。 ;; [19] なぜ [[XLink]] を規定する仕様書がこれを規定せずに提案しているに留まっているのか謎ですが・・・。 * 歴史 ** CSS1 [REFS[ - [27] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-10-07 10:35:41 +09:00]] 版) - [22] [CITE[Cascading Style Sheets, level 1]] ([TIME[2008-04-10 02:23:32 +09:00]] 版) ]REFS] [28] これらの[[擬似クラス]]は >>27 で追加されました。 [23] [[CSS1]] では [CODE(CSS)@en[[[:link]]]], [CODE(CSS)@en[[[:visited]]]], [CODE(CSS)@en[[[:active]]]] の3つのいずれか1つの状態であるとされていました。 ;; [26] これは [[HTML]] の [CODE(HTMLe)@en[[[body]]]] [[要素]]の[[属性]]に基づく当時の[[Webブラウザー]]の処理モデルに由来しています。 [24] [[CSS1]] では [[HTML]] の [CODE(HTMLe)@en[[[a]]]] [[要素]]の [CODE(HTMLa)@en[[[href]]]] [[属性]]があるものに適用されるとされていました。 ** CSS2 [REFS[ - [14] [CITE@en[Selectors]] ([TIME[2011-06-07 13:09:52 +09:00]] 版) ]REFS] [25] [[CSS2]] では [[HTML]] 以外への適用も考慮し、適用対象は[[マーク付け言語]]によって決まるとされました。 ** XLink [REFS[ - [1] [CITE@en[XML Linking Language (XLink) Version 1.1]] ([TIME[2008-04-04 00:59:29 +09:00]] 版) ]REFS] [33] [[XLink]] 仕様書は [[XLink]] への適用について言及していました。 ** 選択子3 [REFS[ - [32] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) ]REFS] ** HTML [REFS[ - [31] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) ]REFS] [34] [[HTML]] 仕様書は [[HTML]] の[[要素]]への適用について言及しています。 * 不思議解釈 [21] [[HTML]] の[[属性名]]に引きずられて [CODE(CSS)@en[[[:vlink]]]] [[擬似クラス]]が存在しているとする解説もあります。 * 関連 [20] 元々 [[HTML]] の [CODE(HTMLa)@en[[[link]]]] [[属性]]や [CODE(HTMLa)@en[[[vlink]]]] [[属性]]に相当する機能として導入されたようです。 * メモ [2] [CITE@ja[CSS によるブラウザ履歴の漏えいを防ぐ取り組み « Mozilla Developer Street (modest)]] ([TIME[2010-05-01 01:24:29 +09:00]] 版) [8] [CITE[Bug 147777 – :visited support allows queries into global history]] ([CODE[2008-10-23 23:45:21 +09:00]] 版) [9] [CITE@ja[「visited疑似クラスのビーコンを拾うサービスが登場」@水無月ばけらのえび日記]] ([TIME[2008-10-23 21:33:55 +09:00]] 版) [10] [CITE@ja-JP[高木浩光@自宅の日記 - 楽天CERTに対するブラウザの脆弱性修正を阻害しない意思確認]] ([[高木浩光]] 著, [TIME[2008-12-14 23:26:14 +09:00]] 版) [11] [CITE@en-US[Preventing attacks on a user's history through CSS :visited selectors]] ([TIME[2010-04-07 13:03:44 +09:00]] 版) [12] [CITE@en-us[Privacy and the :visited selector - MDC]] ([TIME[2010-06-01 08:08:04 +09:00]] 版) [13] [CITE@en[HTML5 Revision Tracker]] ([TIME[2010-08-03 23:55:56 +09:00]] 版) [7] [CITE[IRC logs: freenode / #whatwg / 20110202]] ( ([TIME[2011-03-19 11:10:11 +09:00]] 版))