有没有一种有效的方法来包装一个HTML元素的DT和DD?
我希望HTML可以做一些在语义上等同于此的东西;
<dl class="main-list"> <definitionitem> <dt>Some Thing</dt> <dd>You know it!</dd> <dt>Another Thing</dt> <dd>Word.</dd> </definitionitem> <definitionitem> <dt>Stuff</dt> <dd>Alright!</dd> </definitionitem> </dl>
但是,由于距离我最近的东西,我不是100%满意的语义;
<div class="redundant-wrapper"> <dl class="main-list"> <dt>Some Thing</dt> <dd>You know it!</dd> <dt>Another Thing</dt> <dd>Word.</dd> </dl> <dl class="another-main-list"> <dt>Stuff!</dt> <dd>Alright!</dd> </dl> </div>
我想知道如果有人有什么其他的想法可以做到这一点?
此外,项目将被分组的原因是因为它们在被标记的内容中被可视化地分组。 设想一个字典页面,带有一个单一的定义列表,其中每个定义位于左侧浮动框内。 我一直遇到这种情况。
不,Ian Hickson(HTML规范编辑) 确信这是一个CSS问题,而不是HTML问题:
这不应该是必要的。 这是CSS的限制。
正确的解决scheme是为CSS提供一些伪元素或其他机制,将匿名容器引入包装要包装的元素的渲染树中。
与此同时,fantasai(CSS规格编辑器)则相反 :
我不认为这是一个CSS问题。 我认为这是一个HTML问题。 伪元素是一个不重要的东西来规范,是一个不平凡的事情来实现,是一个比较混乱的东西来使用。
尽pipe如此,伊恩显然无视这一点,并继续脱离现实。
LEGEND
(根据HTML规范必须是FIELDSET
第一个直接子项), FIGCAPTION
(必须是图的首先/最后直接子)和LI
( UL
/ OL
直接子项)有同样的问题。
至于DT
/ DD
,我个人在LI
里面每个都使用UL
列表和DL
:
<ul> <li><dl> <dt>Lorem</dt> <dd>Lorem definition</dd> </dl></li> <li><dl> <dt>Ipsum</dt> <dd>Ipsum definition</dd> </dl></li> </ul>
所以我们有DL
来做DT
和DD
之间的关系,和UL
列表使它们都属于一个列表。
更新(2016-11-14): HTML标准(现在的WHATWG版本 )现在(自2016-10-31起) 允许 DIV
元素(可选地与所谓的脚本支持元素SCRIPT
, TEMPLATE
)成为直接的孩子的DL
元素。 W3C的HTMLvalidation器 没有考虑到这个变化,但是实验性的HTML5.orgvalidation器却这样做。
更新(2017-01-18):原来规范不允许DT
/ DD
使用多个嵌套的DIV
封装器,因此实际上该function的实用性实际上是非常有限的,这里描述的UL
→ LI
→ DL
方法仍然是相关。