Skip to content

ousllc/webflow-tableofcontents

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

目次ジェネレーター

この JavaScript ライブラリは、ウェブページの目次(TOC)を動的に生成するためのものです。コンテンツ内の見出しに基づいて目次を作成し、カスタマイズやインタラクションのオプションを提供します。

はじめに

このライブラリを使用するには、以下のスクリプトを HTML に含めてください:

<script src="https://cdn.jsdelivr.net/gh/ousllc/webflow-tableofcontents@latest/dist/tableofcontents.min.js"></script>

使い方

1. HTML に必要な要素を追加

まず、目次を表示するコンテナと、目次を生成するコンテンツ領域を用意します。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 目次 -->
    <button id="toggleButton" class="toc-toggle">目次</button>
    <div id="toc"></div>
    <button id="showAllButton" class="show-all">全て表示</button>
    <!-- リッチテキスト -->
    <div class="article">
      <!-- 見出し (h1-h6) を含むコンテンツ -->
      <h1>はじめに</h1>
      <p>...</p>
      <h2>セクション1</h2>
      <p>...</p>
      <!-- 他のコンテンツ -->
    </div>

    <script src="https://cdn.jsdelivr.net/gh/ousllc/webflow-tableofcontents@latest/dist/tableofcontents.min.js"></script>
    <script>
      const toc = new Toc(
        ".article", //目次を作成するリッチテキストのクラスまたはID(#article)
        "#toc", //目次の作成領域を指定
        //最低限必要なオプション設定
        {
          classes: {
            h1: "custom-toc-h1",
            h2: "custom-toc-h2",
            h3: "custom-toc-h3",
            h4: "custom-toc-h4",
            h5: "custom-toc-h5",
            h6: "custom-toc-h6",
          },
        }
      );

      toc.initialize();
    </script>
  </body>
</html>

2. JavaScript で目次を初期化

以下のコードを使用して、目次を初期化します。コンテンツ領域、目次コンテナ、見出し ID、およびオプションを指定します。

const toc = new Toc(
  ".article",
  "#toc",
  {
    h1: ["intro", "overview", "conclusion"],
    h2: ["section1", "section2"],
    h3: ["subsection1", "subsection2"],
    h4: ["detail1"],
    h5: [],
    h6: [],
  },
  {
    offsetTop: 100, // スクロール時のオフセット
    duration: 500, // スクロールのアニメーション時間(ミリ秒)
    maxItems: 2, // 最大表示項目数
    classes: {
      h1: "custom-toc-h1",
      h2: "custom-toc-h2",
      h3: "custom-toc-h3",
      h4: "custom-toc-h4",
      h5: "custom-toc-h5",
      h6: "custom-toc-h6",
    },
    showAll: { enabled: true, id: "showAllButton" }, // 全て表示ボタンの設定
    toggleButton: { enabled: true, id: "toggleButton" }, // 目次トグルボタンの設定
  }
);

toc.initialize();

3. オプションの説明

  • offsetTop: スクロール時のオフセット(ピクセル単位)。
  • duration: スクロールのアニメーション時間(ミリ秒単位)。
  • maxItems: 初期表示される目次項目の最大数。
  • classes: 各見出しレベルに対応するクラス名。
  • showAll: 全て表示ボタンの設定。
    • enabled: 全て表示ボタンを有効にするかどうか。
    • id: 全て表示ボタンの ID。
  • toggleButton: 目次トグルボタンの設定。
    • enabled: 目次トグルボタンを有効にするかどうか。
    • id: 目次トグルボタンの ID。
  • includeHeadings: 目次に含める見出しレベルを指定するリスト(例:['h2']

4. 見出し ID の設定

Toc クラスの初期化時に、各見出しレベル (h1h6) に対して任意の ID を指定できます。これにより、特定の見出しに固定された ID を付与できます。ID リストに指定がない場合、またはリストの長さが見出しの数より少ない場合、残りの見出しには自動的に連番 ID が付与されます。

例えば、以下の設定では:

const toc = new Toc(
  ".article",
  "#toc",
  {
    h1: ["intro", "overview", "conclusion"], // h1見出しに指定するID
    h2: ["section1", "section2"], // h2見出しに指定するID
    h3: ["subsection1", "subsection2"], // h3見出しに指定するID
    h4: ["detail1"], // h4見出しに指定するID
    h5: [], // h5見出しに指定なし(自動付与)
    h6: [], // h6見出しに指定なし(自動付与)
  },
  {
    // その他のオプション
  }
);
  • h1 見出しには "intro", "overview", "conclusion" の ID が付与されます。
  • h2 見出しには "section1", "section2" の ID が付与されます。
  • h3 見出しには "subsection1", "subsection2" の ID が付与されます。
  • h4 見出しには "detail1" の ID が付与されます。
  • h5 および h6 見出しには自動的に header1, header2, ... のように連番の ID が付与されます。

5. ボタンの動作

  • 目次トグルボタン: 目次の表示/非表示を切り替えます。目次が閉じられるとき、全ての項目が隠され、全て表示ボタンが再表示されます。
  • 全て表示ボタン: 目次の全ての項目を表示します。クリックするとボタン自体が非表示になります。

6. h2 のみを目次に含める場合

初期化時に includeHeadings オプションを指定して、目次に含める見出しレベルを h2 のみに設定します。

const toc = new Toc(
  ".article",
  "#toc",
  {
    h1: [],
    h2: ["section1", "section2", "section3"],
    h3: [],
    h4: [],
    h5: [],
    h6: [],
  },
  {
    offsetTop: 100,
    duration: 500,
    maxItems: 2, // 最大表示項目数
    classes: {
      h1: "custom-toc-h1",
      h2: "custom-toc-h2",
      h3: "custom-toc-h3",
      h4: "custom-toc-h4",
      h5: "custom-toc-h5",
      h6: "custom-toc-h6",
    },
    showAll: { enabled: true, id: "showAllButton" },
    toggleButton: { enabled: true, id: "toggleButton" },
    includeHeadings: ["h2"], // h2 のみを目次に含める
  }
);

toc.initialize();

これで、h2 見出しのみが目次に含まれるようになります。他の見出しレベルは無視されます。

これで、目次ジェネレーターの設定と使用方法が完了です。必要に応じて、オプションをカスタマイズしてご利用ください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published