[2] :target
擬似クラスは素片識別子によって指定されている対象要素に適用されます
>>1。
[3] 文書URLが素片識別子により特定の要素を指している時 (その URL
でページを開いた時や、ページ内のリンクの移動でそうなったとき)、当該要素には
:target
擬似クラスが適用されます。
この要素を対象要素群といいます >>1。
[17] 文書は、対象要素を持ちます >>9。 初期値は null です >>9。 文書の対象要素群は、当該文書の対象要素が null でなければ対象要素を含むリスト、 null なら空のリストです。 >>16
[10] 文書の対象要素は、素片識別子へのスクロール時に、 その時点の文書の示された部分の要素に変更されます。
[13] これは navigate の最後の方の手順で決定されます。 文書のレンダリングが開始されて構文解析が完了していない途中では、 まだ設定されていないことがあります。
[5] 文書の示された部分は任意の DOM 操作で変化する可能性がありますが、
:target
が変化するのは navigate のタイミングのみとなります。
[11] 選択子の仕様は対象要素を素片識別子によって識別される要素であるとしか説明していませんでしたが、
HTML 仕様書はより明確にその決定方法を規定しています。 HTML の仕様書とはいえ、 Webブラウザーの挙動について
text/html
に限らず適用される規定であり、事実上選択子仕様の曖昧な部分を明確化する形となっています。
[12] Chrome では pushState
で素片識別子が変わっても、
:target
の状態は変化しないようです。
[15] Make :target definition sticky based on last scroll-to-fragment ( (domenic著, )) <https://github.com/whatwg/html/commit/1488bb6f765e41558bb221dc247012a35d88527b>
:target
はどの要素にも一致しません。