仕様
DATAILS要素は、
ユーザーが追加情報
またはコントロールを取得できる
開示ウィジェットを表します。
details | 開示操作 (disclosure |
---|---|
カテゴリ |
|
種類 | 通常要素 |
この要素を 使用できる 状態 | フロー |
許可されて いる内容 | 1つの summary要素とそれに続くフロー |
属性 | グローバル属性, open |
text / html での タグの省略 | 省略できません。 |
許可されて いるARIA | なし[既定値 : group] |
DOM インター フェイス | HTMLDetailsElement |
レンダリング | ウィジェット
CSS を大雑把に読むと、 フローレイアウトに配置されたときにブロックレベルのボックスを生成します。 などになります。 |
参加 コンテキスト | ブロック |
確立 コンテキスト | ブロック |
details要素は、追加情報を表します。summary要素で、要約を表します。open属性が存在する場合は、要約と追加情報の両方がユーザーに初期表示されることを示します。存在しない場合は、要約のみが初期表示されます。
summarydetails
| |
使用可能な箇所
フローコンテンツを
受け入れる要素に
配置できます。
details要素は、フロー
- <div>
- <details>
- <summary>summary</summary>
- details
- </details>
- </div>
div要素はフロー
summary
details- <div>
- <a href="./index.htm">
- <div>
- <details>
- <summary>summary</summary>
- details
- </details>
- </div>
- </a>
- </div>
- <div>
- <a href="./index.htm">
- <div>
- (details)
- (summary)
- summary
- (/summary)
- details
- (/details)
- </div>
- </a>
- </div>
a要素は子孫にインタラクティブコンテンツを受け付けない要素です。ですので a要素のコンテンツの子孫として details要素を配置する事ができません。
a要素は透過的コンテンツなので、祖先の要素に配置できるコンテンツを配置できます。祖先の div要素はフロー
a要素などの検証の為に、details要素をタグを書き換える事により文字データとしてみました。
あくまで文法としての例であって、実用として a要素と details要素の機能を合わせたい事はないかと思います。
配置できるコンテンツ
summary要素と
フローコンテンツを
配置できます。
details要素は、1つの summary要素とそれに続くフロー
- <details>
- <summary>summary</summary>
- <div>details</div>
- </details>
summary要素は、配置できます。div要素はフロー
summary
open属性
- <details open>
- <summary>summary</summary>
- <div>details</div>
- </details>
open属性は、要約と追加情報の両方が初期表示される事を示す論理属性です。属性が存在しない場合は、要約のみが表示されます。
summary
気を付ける点
領域の変化
- <details>
- <summary>summary</summary>
- <div>details</div>
- <details>
- <summary>summary2</summary>
- <div>details2</div>
- </details>
- </details>
追加情報の表示, 非表示によって、占有する領域が変化します。
summary
summary2
CSSリセット
- details {
- display: block;
- }
normalize.css というリセットCSS の一部で、Edge、IE 10 +、Firefoxで正しいディスプレイを追加します。
details要素の例示は、上記の CSSの効果を効かない指定をしている例です。
詳細は理解していないのですが、いろいろとバグ等の対応も含んでいる様なので、リセットCSSを利用する事をお勧めします。