Skip to content

目次

TableOfContentsコンポーネントは、ページ内の見出しから自動的に目次を生成し、スクロールスパイ機能とスムーススクロールを提供するナビゲーションコンポーネントです。Litとデザイントークンを使用して構築され、一貫したテーマとアクセシビリティを提供します。

  • 自動生成: ページ内の見出しから自動的に目次を生成
  • スクロールスパイ: 現在表示中のセクションをハイライト
  • 階層表示: 見出しレベルに応じたインデント表示
  • スムーススクロール: クリック時のスムーズなスクロール
  • カスタマイズ可能: 深度制限、セレクター、タイトルのカスタマイズ
  • テーマ対応: ライトテーマとダークテーマの自動切り替え
  • レスポンシブ: モバイルデバイスでの適切な表示
---
import TableOfContents from '@components/TableOfContents.astro';
---
<TableOfContents
title="目次"
selector="h1, h2, h3, h4, h5, h6"
autoGenerate={true}
maxDepth={3}
theme="light"
/>
プロパティデフォルト説明
titlestring"目次"目次のタイトル
selectorstring"h1, h2, h3, h4, h5, h6"目次に含める見出しのCSSセレクター
autoGeneratebooleantrue自動生成を有効にするかどうか
maxDepthnumber3目次に含める最大の見出し深度
theme"light" | "dark""light"コンポーネントのテーマ

TableOfContents Component

Table of contents component for automatically generating navigation from page headings.

Basic Usage

Auto-generated TOC

Max Depth

Depth 2

Depth 3

Themes

Light Theme

Dark Theme

Usage Examples

Documentation TOC

Article TOC

見出しの深度を制限して、目次に表示するレベルを調整できます:

<TableOfContents
title="目次(H2まで)"
maxDepth={2}
/>

特定の見出しのみを対象にしたい場合:

<TableOfContents
title="セクション一覧"
selector="h2, h3"
/>

ダークテーマでの表示:

<TableOfContents
title="目次"
theme="dark"
/>
  • キーボードナビゲーション: タブキーで目次のリンク間を移動可能
  • スクリーンリーダー対応: 適切なARIA属性とセマンティックHTML
  • フォーカス表示: キーボードフォーカスの視覚的表示
  • スムーススクロール: スクロール時のユーザー体験向上

Intersection Observer APIを使用して、現在表示中のセクションを検出し、対応する目次リンクをアクティブ状態にします。

  • 見出しの検出は一度だけ実行
  • スクロールイベントの最適化
  • メモリリークの防止
  • モダンブラウザ(ES2020+)
  • Intersection Observer API対応ブラウザ
  • CSS Grid対応ブラウザ
  1. 適切な深度設定: コンテンツの構造に応じてmaxDepthを調整
  2. 一貫した見出し構造: 論理的な見出し階層を維持
  3. テーマの統一: ページ全体のテーマと一致させる
  4. レスポンシブ対応: モバイルでの表示を考慮した配置
  • autoGeneratetrueに設定されているか確認
  • selectorが正しい見出し要素を指定しているか確認
  • ページ内に対象の見出しが存在するか確認

スクロールスパイが動作しない場合

Section titled “スクロールスパイが動作しない場合”
  • 見出しに適切なIDが設定されているか確認
  • ブラウザがIntersection Observer APIをサポートしているか確認
  • デザイントークンが正しく読み込まれているか確認
  • テーマプロパティが正しく設定されているか確認