dl要素内のdivの使い方についてメモ
HTML5.2よりdl
要素内でdiv
要素が使用できるようになったのですが、誤解していた部分があったのでメモ。
単純に「dl
要素の子孫要素としてdiv
が使える」と覚えておりdiv
要素をdd
要素のラッパーとして使おうとしていたのですが、HTML Living Standardに反する使い方だったようです1。
<!-- これはNG --> <dl> <dt></dt> <div> <dd></dd> <dd></dd> <dd></dd> </div> </dl>
dd
要素の前に配置される兄弟要素はdt
またはdd
要素と決まっており、この点が仕様違反となっていました。
つまり、dl
要素内でdiv
を使う際には、dt
およびdd
要素をまとめてラップする形で使用するのが仕様に沿った使い方となります。
<!-- これはOK --> <dl> <div> <dt></dt> <dd></dd> <dd></dd> <dd></dd> </div> </dl>
ただ上記の形では、dd
要素群をひとまとまりに扱いたい場合に少し不都合があります。そのため今回は仕様に合った形で下記のように書き換えました。
<!-- 仕様に合う形に書き換え --> <dl> <dt></dt> <dd> <ul> <li></li> <li></li> <li></li> </ul> </dd> </dl>
ネストが増えているのが少し気持ち悪いですが、そこは仕方ないということで。
参考
-
2021.2.10現在↩