🚪

クリックで開閉、JSなし!`<details>`要素の本気を見よ

に公開

クリックで開閉、JSなし!<details>要素の本気を見よ

開閉UIといえば JavaScript?
いえいえ、今や HTMLだけで「開閉・トグルUI」が作れる時代です。

その秘密は…

<details><summary>

この記事では、そんな <details> 要素の魅力と実践テクニックを紹介します!


<details> 要素とは?

<details> は、開閉できるコンテンツを表すセマンティックなHTMLタグです。
内部の <summary> をクリックすると、その中身が開いたり閉じたりします。

<details>
  <summary>もっと見る</summary>
  <p>ここに詳細情報が表示されます。</p>
</details>

これだけで開閉UIが完成!しかも…

  • ✅ JavaScript不要
  • ✅ セマンティックに意味づけ可能
  • ✅ デフォルトで開閉が動作
  • ✅ キーボード操作やスクリーンリーダーにも対応(アクセシビリティ◎)

🎨 よくあるカスタマイズ:矢印(▶︎)の制御

Safari(特にiOS)などでは、デフォルトの▶︎マークが表示されるため、
自前のアイコンに差し替えたい・非表示にしたいケースも多いです。

details summary {
  list-style: none;     /* Safariでの▶︎除去 */
}
details summary::-webkit-details-marker {
  display: none;        /* Chromeでも除去 */
}

これで▶︎マークを消し、代わりにCSSやSVGでアイコンを追加することも可能です。


💡 状態に応じたスタイルも可能!

開いているかどうかは [open] 属性で判定できます。

details[open] summary {
  font-weight: bold;
  color: gray;
}

🛠 実装パターン3選

① FAQアコーディオン

<details>
  <summary>Q. 配送料はかかりますか?</summary>
  <p>A. 全国一律500円です。5,000円以上のご注文で送料無料になります。</p>
</details>

② プロフィールの詳細表示

<details>
  <summary>須藤 作良</summary>
  <ul>
    <li>職業:Webデザイナー</li>
    <li>経験:10年以上</li>
    <li>スキル:HTML, CSS, Figma, Git, etc.</li>
  </ul>
</details>

③ スマホ向けナビゲーションメニュー

<details class="nav">
  <summary>メニュー</summary>
  <nav>
    <a href="#">ホーム</a>
    <a href="#">サービス</a>
    <a href="#">お問い合わせ</a>
  </nav>
</details>

⚠️ 注意点とTips

  • <summary> を省略すると開閉できなくなります
  • <summary> を非表示(display: none)にすると操作不能に
  • 複数 <details> を開閉連動させる場合はJSが必要(今回の範囲外)

✅ まとめ

  • details + summary を使えば HTMLだけで開閉UIが実現できる
  • FAQ・ナビ・プロフィールなど、よくあるUIに応用可能
  • セマンティックかつアクセシブルで、保守性・拡張性も高い

「ちょっとしたUIだけどJS書くのは面倒…」というときこそ、
<details> 要素の本気を試してみてください!


🔗 参考リンク

Discussion