TableOfContents

長い資料の見出しへ移動し、現在の位置を示します。

公開前の確認事項を、担当者が上から順に読み進めるための資料です。

この資料の目的

公開する内容、添付ファイル、共有範囲を一つずつ確認します。修正が必要な項目は、公開する前に担当者へ戻してください。

内容の確認

  • 見出しと本文が、現在の案内内容と一致しているか
  • 日時や連絡先が、予定表と一致しているか
  • リンク先を開き、閲覧できるか

添付ファイル

最新版のファイルが添付されていることを確認します。古い版が残っている場合は、公開前に取り除いてください。

共有範囲

閲覧できる人と公開開始日を確認します。限定公開の資料は、対象外の人へリンクを送らないでください。

最終確認

修正が反映された内容をもう一度読み返し、担当者と確認日を記録してから公開します。

使いどころ

  • 規約や手順書などの長い資料で、本文の冒頭に番号付きの目次を置き、見出しへ移れるようにする時に使います。
  • 同じ領域のページを切り替える時はNavigation、同じ場所でパネルを切り替える時はTabsを使います。

使い方

labelとsectionsを渡すと、番号付きの目次と、見出し・本文を続けて描画します。各節はid・title・contentを持ち、level: 3で小見出しにして「1.1」のように一段下げます。前に章がないlevel: 3は、章として扱います。

目次の見出しは、字間を空けた11pxの灰色の大文字(通常の太さ)です。項目はNavigationと同じ13pxの濃い灰色(二段目は12px)で、行の間隔は28px、番号は茶色の11pxの数字です。項目はNavigationと同じく背景のパネルを持たず、ホバーすると名前を黒くして下線を引き、今読んでいる項目は角の無い暖かい灰色の面(#e6e3de)と黒い太字で示します。本文の節の見出し(h2)はSectionと同じ15pxの赤の通常の太さ、小見出し(h3)は本文の大きさ(13px)の黒い太字です。

目次の項目は通常のページ内リンクなので、JavaScriptなしでも見出しへ移れます。

TableOfContentsControllerをtable-of-contentsとして登録すると、スクロールに合わせて今読んでいる節の項目を示します。画面の上端からoffset(px)の位置を越えた最後の見出しを現在地にし、ページの末尾まで読むと最後の見出しを現在地にします。

各idはページ内で一意にし、空白を含めません。controllerはidの重複や空白を見つけると、現在地を示しません。

アクセシビリティ

  • 目次はlabelを読み上げ名に持つnavで、番号はaria-hiddenで読み上げません。
  • 現在地の項目にaria-current="location"を付けます。
  • 見出しはlevelに応じてh2・h3で出します。画面の見出し(h1)の下に置きます。

API

TableOfContents

長い資料の見出しとページ内リンクを一緒に描画する。

TableOfContentsのprops
名前型既定値説明
label必須string目次の見出しと、navの読み上げ名。
sections必須readonly TableOfContentsSection[]目次と本文に並べる節。書いた順に番号を振る。
offsetnumber80現在地を判定する位置。画面の上端からの距離(px)で、この位置を越えた最後の見出しを現在地にする。固定したバーで見出しが隠れる時は、その高さに合わせる。0未満や数でない値は既定に戻す。

登録するcontroller:table-of-contents(TableOfContentsController)

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/table-of-contents.css

TableOfContentsSection

TableOfContentsSection
名前型既定値説明
id必須string見出しのid。目次のページ内リンクの行き先になる。空白を含めず、ページ内で一意にする。
title必須string見出しの文言。目次の項目と本文の見出しの両方に出す。
level2 | 3見出しの段。2は章(h2)、3は小見出し(h3)で、目次では「1.1」のように一段下げる。前に章が一つもない3は章として扱う。
content必須Child見出しの下に置く本文。

コード

HTML
Hono JSX