CSSの:targetでアンカーリンク先の要素にスタイルを適用する方法をわかりやすく解説

スポンサーリンク

:targetは、HTMLドキュメント内でアンカーリンクのターゲットとして指定された要素にスタイルを適用するCSS擬似クラスです。URLの末尾にある#IDによってリンクされる要素が、ターゲットとして選択され、指定されたスタイルが適用されます。

スポンサーリンク

:targetの値とその効果の一覧

  • :target: URLのフラグメント識別子によりターゲットとなる要素に適用されるスタイル。

注意点と関連情報

:targetは、リンクされた要素だけに適用され、ページの他の部分には影響を与えません。また、ターゲットとなる要素が存在しない場合は、スタイルは適用されません。

:targetが効かない理由として考えられること

正しいIDが指定されていない

:targetは、URLのフラグメント識別子(#id)と一致する要素にスタイルを適用します。対象要素にidが正しく指定されていない場合、:targetは機能しません。
対策:URLのフラグメント識別子と、対象要素のid属性が正しく一致していることを確認します。例えば、<div id="section1">という要素に対して、example.com#section1のようにリンクする必要があります。

ページがリロードされていない

:targetはフラグメント識別子によるページ内リンクがクリックされた瞬間に適用されます。リンクをクリックせずにページを直接開いただけでは、:targetは機能しません。
対策:リンクをクリックして、フラグメント識別子が正しく機能しているか確認します。ページが正しいフラグメント識別子付きでリロードされていることを確認してください。

URLのフラグメント識別子が動的に変更されている

JavaScriptなどによってURLのフラグメント識別子が動的に変更される場合、:targetが正しく反映されないことがあります。
対策:JavaScriptでフラグメント識別子を操作している場合、その変更が正しく行われているか確認し、必要に応じて手動でテストします。

表示例

CSS :target

以下の例では、:targetを使ってリンク先となった要素に特定のスタイルを適用します。リンクをクリックすると、ターゲットとなったボックスが異なる色で表示されます。

HTMLコード

<div class="css-sample-container">
    <a href="#box1">ボックス1へリンク</a>
    <a href="#box2">ボックス2へリンク</a>
    <a href="#box3">ボックス3へリンク</a>

    <div id="box1" class="css-sample-box">ボックス1</div>
    <div id="box2" class="css-sample-box">ボックス2</div>
    <div id="box3" class="css-sample-box">ボックス3</div>
</div>

CSSコード

.css-sample-container {
    margin: 20px;
    padding: 20px;
    border: 1px solid #ccc;
    background-color: #f9f9f9;
}

.css-sample-box {
    padding: 10px;
    margin: 10px 0;
    border: 1px solid #ccc;
    background-color: #e0f7fa;
}

.css-sample-box:target {
    background-color: #b2ebf2;
    border-color: #00acc1;
    outline: 2px solid #00acc1;
}

表示結果

まとめ

  • :targetは、URLのフラグメント識別子でターゲットとなった要素にスタイルを適用します。
  • ターゲットとしてリンクされた要素にのみスタイルが適用され、他の要素には影響を与えません。
  • 主にアンカーリンクによるページ内移動でスタイルを適用するために使用されます。