HTML Tag Reference

details 要素

折りたたみメニューを表す

details 要素は閲覧者が操作可能な、開閉式のウィジットを表します。所謂、折りたたみメニュー(所謂、アコーディオン UI)が簡単に作成できます。また、open 属性によって最初から開いた状態を指定したり、name 属性をつかって、複数の details 要素をグループ化し、グループ内の details 要素が 1つ開いたら、他を閉じる、といった動作をさせることも可能です。

対応ブラウザであれば、下記に開閉式メニューが表示ます。

なお、details 要素が開いた状態では、ブラウザによって自動的に open 属性が付与されるため、CSS セレクタから状態を取得することが可能なほか、JavaScript の toggle イベントでも取得することができます。詳しくは下記のサンプルソースをご覧ください。

/* details 要素が開いた状態は下記のように CSS セレクタでマッチできます。 */
details[open] {
  background-color: yellow;
}
// details 要素の状態の変化は JavaScript でも取得可能です。
const detailsList = document.querySelectorAll('details');

detailsList.forEach((details) => {
  details.addEventListener('toggle', (event) => {
    if (details.open) {
      // details 要素が開いている
    } else {
      // details 要素が閉じている
    }
  });
});

details 要素の仕様

コンテンツモデル

最初の子要素として summary 要素が 1つ必須

この要素を使用できる文脈

フロー・コンテンツが期待される場所

この要素で使用できる属性

詳細説明

open 属性

open 属性が指定されると、ページ読み込み時に初期状態で details 要素の内容を表示します。open 属性は論理属性です。

name 属性

details 要素に付与された name 属性値は、details 要素をグループ化します。

複数の details 要素に name 属性で同じ名前を付けると、それらはグループと見なされ、相互に排他的な動作、つまり「1つを開いた時に他を閉じる」という動作を実現できます。

details 要素のサンプルソース

<details open="open">
 <summary>コンテンツメニュー</summary>
 <details>
  <summary>HTML</summary>
  <ul>
   <li><a href="/html5/tag.html">HTML5 タグリファレンス</a></li>
   <li><a href="/html5/info.html">HTML5 の基礎知識</a></li>
   <li><a href="/html5/link.html">HTML5 に関するリンク集</a></li>
  </ul>
 </details>
 <details>
  <summary>CSS</summary>
  <ul>
   <li><a href="/css/tag.html">CSS リファレンス</a></li>
   <li><a href="/css/info.html">CSS の基礎知識</a></li>
   <li><a href="/css/link.html">CSS に関するリンク集</a></li>
  </ul>
 </details>
</details>
<!--
details 要素に name 属性で同じ名前を付けると、それらはグループ化され、
相互に排他的な動作、つまり「1つを開いた時に他を閉じる」という動作を実現できます。
-->
<details open="open">
 <summary>コンテンツメニュー</summary>
 <details name="content-menu">
  <summary>HTML</summary>
  <ul>
   <li><a href="/html5/tag.html">HTML5 タグリファレンス</a></li>
   <li><a href="/html5/info.html">HTML5 の基礎知識</a></li>
   <li><a href="/html5/link.html">HTML5 に関するリンク集</a></li>
  </ul>
 </details>
 <details name="content-menu">
  <summary>CSS</summary>
  <ul>
   <li><a href="/css/tag.html">CSS リファレンス</a></li>
   <li><a href="/css/info.html">CSS の基礎知識</a></li>
   <li><a href="/css/link.html">CSS に関するリンク集</a></li>
  </ul>
 </details>
</details>

主要ブラウザの対応

IE11 ×
Edge(EdgeHTML) ×
Edge(Chromium)
Chrome
Firefox name 属性は未対応
Safari
iOS Safari
Android Chrome

用途から目的の要素を探す

用途から HTML 要素を逆引きできます。