コンテンツにスキップ

目次

hc-toc は、ページ内アンカーリンクのリストを包むラベルつき <nav> の上の純 CSS スキンです — 長いリファレンスページでおなじみの 「このページ内」ジャンプリスト。JavaScript なしで機能します。 data-hc-spy を足せば、installSpy ビヘイビアが、読者のスクロールに合わせて表示中のセクションのリンクに 印を付けます。

別名: 目次、ページ内ナビゲーション。

下のアクティブリンクは、スタイリングを見せるために aria-current="location" を静的に付けています。data-hc-spy があれば ビヘイビアが設定してくれます。

<li class="hc-toc__item"> のラッパーは任意です — スタイリングは .hc-toc__list / .hc-toc__link をキーにするため、nav 直下の平坦な リンク列でも機能します。

nav に data-hc-spy を足してビヘイビアをインストールします。各リンクの #fragment をターゲットセクションに解決し、IntersectionObserver で 観測して、ビューポート上端にあるセクションのリンクへ aria-current="location"data-active フックの印を付けます。

<nav class="hc-toc" data-hc-spy aria-label="On this page">
<a class="hc-toc__link" href="#sec-inputs">Inputs</a>
<a class="hc-toc__link" href="#sec-sql">SQL</a>
<a class="hc-toc__link" href="#sec-tests">Tests</a>
</nav>
<section id="sec-inputs"></section>
<section id="sec-sql"></section>
<section id="sec-tests"></section>

ビヘイビアは存在するセクションだけを追跡し、リンクの解決はインストール 時に一度だけ行います(追跡対象のコンテンツをスワップしたら再インストール してください)。スムーススクロールを強制することは決してありません — リンクのクリックはブラウザネイティブのアンカージャンプです — なので prefers-reduced-motion がゲートすべきものもありません。

状態設定方法スタイリング
アクティブなセクションinstallSpyaria-current="location" + data-active を設定(直接書いても可)--hc-toc-active-fg--hc-toc-active-font-weight、inline-start のマーカー(--hc-toc-active-marker)
ホバー:hover--hc-toc-link-fg--hc-toc-link-hover-fg
フォーカス:focus-visible--hc-color-focus-ring2px アウトライン

アクティブのルールは [aria-current="location"][data-active]両方に一致するため、ハイライトはビヘイビア由来でもサーバレンダリング されたマークアップ由来でも機能します。

  • <nav> にラベルを付け(aria-label="On this page" または aria-labelledby)、ランドマークに名前を与えてください。
  • アクティブなリンクは aria-current="location" を運びます — 「集合内の現在位置」を表す ARIA の値で、視覚状態とスクリーン リーダーのシグナルの両方を駆動します。
  • JavaScript なしでも、nav は機能するアンカーリンクのリストのまま (アクティブハイライトなし)です — プログレッシブエンハンスメント。
  • フォーカスアウトラインを保ってください。デフォルトはシステムの他の 部分に合わせて --hc-color-focus-ring を使います。

component トークン(component.tokens.json):

トークンパス用途
toc.font-sizeリスト全体のテキストサイズ。
toc.gapリンク間の縦のスペース。
toc.indentinline-start のパディング(アクティブマーカーの余地)。
toc.link.fg / hover-fg非アクティブなリンクの色(平常時とホバー)。
toc.active.fg / font-weightアクティブなリンクの見た目。
toc.active.markerアクティブリンクの inline-start マーカーの色。
生成される CSS 変数を表示
--hc-toc-font-size | -gap | -indent
--hc-toc-link-fg | -link-hover-fg
--hc-toc-active-fg | -active-font-weight | -active-marker
--hc-color-focus-ring (inherited from data-color)
  • パンくずリスト — サイトルートから現在のページまでの道筋。
  • タブ — 兄弟セクション間の切り替え。