HTML講座 / detailsとsummaryで開閉できる説明を作る

detailsの中にsummaryを置くと、ブラウザー標準の開閉式の説明を作れます。summaryが操作用の見出し、残りが開いたときの内容です。初期状態で開く場合はopen属性を付けます。

基本の開閉を作る

次のコードをHTML文書のbodyへ入れて開きます。最初は「View opening hours」だけが見え、選択すると説明が現れ、もう一度操作すると閉じます。

<details>
  <summary>View opening hours</summary>
  <p>We are open Monday through Friday, 9 a.m. to 6 p.m.</p>
</details>

summaryはdetailsの最初に置きます。単純な開閉だけならスクリプトは必要ありません。矢印や枠などの表示はブラウザーやCSSで変わっても、文言から内容を判断でき、操作できることが大切です。

最初から開いた状態にする

openを付けると初期状態で展開され、利用者は閉じたり再び開いたりできます。

<details open>
  <summary>Delivery information</summary>
  <p>Arrival times vary by area.</p>
</details>

openは真偽属性なので、open="false"でも属性が存在し、開いた状態です。閉じた状態にしたければ属性を取り除きます。真偽属性の規則と同じです。全員が読むべき重要な条件を、任意の補足のように閉じ込めないようにします。

何が開くか分かるsummaryを書く

複数並べる場合は、それぞれが何を説明するかを文言で区別します。「詳細」だけを繰り返すと、必要な項目を見つけにくくなります。FAQの回答を開閉させる使い方もできますが、短くすぐ必要な回答なら、そのまま表示した方が読みやすい場合もあります。

開閉は読者に追加の操作を求めます。装飾として多用せず、必要な説明を探しやすくする場合に使います。構造はMDNのdetailsで確認できます。

キーボードと初期状態を比較する

ファイルを再読み込みし、openなしとopenありを比較します。Tabでsummaryへ移動してフォーカスが見えるかを確認し、EnterとSpaceを別々に使って開閉します。CSSを追加した場合は同じ試験を繰り返します。

この基本例ではsummaryに競合するリンクやボタンを入れず、文章で内容を示します。標準の要素を使っていても、複雑な独自操作を加えた場合のフォーカスは別途確認が必要です。MDNのsummaryに使用上の条件があります。

開閉できない場合

summaryがdetailsの中にあるか、閉じタグが正しいかを確認します。CSSでクリック領域やフォーカスの表示を消していないかも調べます。一つずつ追加した変更を戻すと、原因を絞り込めます。操作全体の確認はHTMLアクセシビリティの実習と合わせて行ってください。

같은 카테고리의 다른 글
HTML講座 / ol・ul・dlと入れ子のリスト

HTML講座 / ol・ul・dlと入れ子のリスト

順序付きリスト、箇条書き、用語と説明のリストを使い分けます。番号の開始位置や逆順表示、リスト項目の中にサブリストを置く正しい構造も学びます。

HTML講座 / HTML文書の基本構造

HTML講座 / HTML文書の基本構造

doctype、html、head、bodyの役割と、文字コード・文書タイトル・viewportの設定を解説します。ファイルの保存から表示確認、表示されない場合の調べ方まで学べます。

HTML講座 / 複数ページで小さなWebサイトを作る

HTML講座 / 複数ページで小さなWebサイトを作る

ホーム・紹介・問い合わせ練習の三ページを作り、共通メニューと現在位置を設定します。フォームは送信値の確認用とし、相対リンク、入力制約、キーボード、文法を点検します。

HTML講座 / placeholderと入力中も残る案内文を付ける

HTML講座 / placeholderと入力中も残る案内文を付ける

label、placeholder、valueの違いを学びます。inputとtextareaの例、aria-describedbyによる説明の関連付け、フォームデータで送られる値の確認方法も紹介します。

HTML講座 / textarea・select・option・buttonを使う

HTML講座 / textarea・select・option・buttonを使う

複数行入力、選択メニュー、送信・リセット・通常ボタンを使い分けます。表示ラベルと送信値、初期値と現在値を実際のフォームで比較する方法も紹介します。

HTML講座 / caption・scope・セル結合で読みやすい表を作る

HTML講座 / caption・scope・セル結合で読みやすい表を作る

表の題名、列見出しと行見出し、colspanとrowspanの関係を学びます。色や位置だけに依存せず、一つの値に対応する見出しを判断できる表を目指します。

HTML講座 / セマンティック要素でページの領域を分ける

HTML講座 / セマンティック要素でページの領域を分ける

header、nav、main、article、section、aside、footerの役割を学びます。見た目の配置と意味を区別し、複数のナビゲーションを識別する方法も紹介します。

HTML講座 / HTMLアクセシビリティの基本を確認する

HTML講座 / HTMLアクセシビリティの基本を確認する

見出し、リンク、画像、フォームを意味のあるHTMLで作る方法を学びます。スキップリンク、キーボード、フォーカス、ズームを確認する小さなページと、検査の限界も紹介します。

HTML講座 / divとspanはいつ使うのか

HTML講座 / divとspanはいつ使うのか

divとspanの内容モデルと使い分けを学びます。CSSのdisplayを変えてもHTMLの親子関係の規則は変わらないことや、意味のある要素を優先する基準も説明します。

HTML講座 / 要素・タグ・属性とHTMLの基本文法

HTML講座 / 要素・タグ・属性とHTMLの基本文法

開始タグと終了タグ、空要素、属性、入れ子、コメントの書き方を学びます。真偽属性や特殊文字の注意点と、ブラウザー表示だけでは判断できない文法エラーも説明します。