アコーディオン(FAQ 用)

UI コンポーネント Easy #html #details #summary #accessibility

HTML5 の <details> / <summary> タグで JavaScript ゼロのアコーディオン FAQ。SEO 構造化データ FAQPage との相性も◎。

▶ プレビュー

解説

アコーディオン(FAQ 用)は、UI コンポーネントカテゴリの「アコーディオン」に分類される実装パターンです。CSS のみで構成され、難易度はシンプルレベル。

details / summary タグを使った最小コードの FAQ アコーディオン。JS 不要・HTML 標準機能だけで開閉。

HTML5 の <details> / <summary> タグを使えば、JavaScript なしでアコーディオン UI が作れます。FAQ ページの定番実装で、Google の FAQPage 構造化データとも相性が良く、検索結果のリッチリザルト表示にも繋がる可能性があります。

このサンプルでは、シンプルな質問+回答パターンで、開閉時の +/× 表示まで CSS で実装しています。コピペしてそのまま FAQ セクションに使えます。

仕組み

下記コードタブから HTML / CSS をそれぞれ確認・コピーできます。プレビュー領域では実際の動作をその場で確認可能です。

WAI-ARIA 属性を活用したアクセシブルな実装です。スクリーンリーダー・キーボード操作にも配慮しています。

注意点 / カスタマイズ時のポイント

<details> は標準でアコーディオン動作するため、複数同時に開くのが許容されます。「1 つだけ開く」挙動にしたい場合は JavaScript で他の details を閉じる処理が必要。

開閉アニメーションは ::details-content 疑似要素(Chrome 131+)か、独自に高さアニメーションを実装する必要があります。

使用例・適したシーン

  • FAQ セクション
  • 詳細スペック表示
  • ナビゲーションの折りたたみ

よくある質問

なめらかに開閉アニメーションさせたい
details::details-content 疑似要素(2024 年〜 Chrome)に transition を当てる方法か、JS で max-height アニメーションを実装する方法があります。
JSON-LD の FAQPage 構造化データを併設するべき?
はい。各 Q&A を @type: Question / @type: Answer でマークアップすると、Google 検索でリッチリザルト化される可能性があります(保証はされません)。
このスニペットは商用利用できますか?
はい。moatway がオリジナルで制作したスニペットは商用・個人問わず自由にご利用いただけます。クレジット表記も不要です。
そのまま貼り付ければ動きますか?
はい。HTML / CSS / JS タブのコードをそれぞれ自分のファイルにコピーして貼り付ければ動きます。クラス名が他の CSS と衝突しないよう、必要に応じてリネームしてください。
ブラウザ対応は?
最新 2 世代の Chrome / Safari / Firefox / Edge で動作確認しています。Internet Explorer はサポート対象外です。
追加日:2026-05-11
← すべてのスニペットへ戻る