假设你有这个定义列表(“集合”的数量并不重要,重要的是有多个)。
<dl>
<dt>Authors
<dd>John
<dd>Luke
<dt>Editor
<dd>Frank
</dl>
我想把这些定义水平排列。这样你就可以得到这样的结果:
Authors Editor
John Frank
Luke
如果你调整浏览器的大小,使它太窄,它会像这样 Package :
Authors
John
Luke
Editor
Frank
有没有一个好的方法来做这件事?
如果我理解正确的话,dl中唯一法律的的元素是dt和dd项,所以我不能把它们 Package 在div元素或类似的东西中。我可以把它们分成单独的dl列表,但这也不正确,因为它应该是一个列表。有什么想法吗?
5条答案
按热度按时间okxuctiv1#
没有有效的标记将一对dt和dd标记 Package 在一起。
di
元素被提议用于XHTML 2.0,但XHTML 2.0从未成功。由于每个项目都有一对内部标记,所以它不像
ul
,其中每个li
标记都可以充当每个列表项目内容的内部 Package 器(在本例中充当每个列的 Package 器)。基本上,每列使用
dl
或ul
,语义标记很好,但是如果没有di
,单个dl
就不能很好地用于这种布局。编辑:
正如@biziclop所提到的,一旦CSS3 Multiple-column layout被标准化并得到支持,就有可能在正确的位置断开列(除了布局方面的有限选项)。最终,代码看起来像这样:
thtygnil2#
让我们来试试css3的不太好支持的多列功能:
缺点:
http://jsfiddle.net/rCQbP/5/
ubof19bj3#
我使用一组无序列表解决了这个问题:请在这里查看:http://jsfiddle.net/radialglo/pXLB4/注意,宽度不需要设置,但为了演示的目的,我设置了一个足够大的宽度,这样它就可以被推到下一行。
这个造型:
如果你坚持使用语义,我不确定是否有可行的解决方案,这是因为每个定义术语和它的定义并没有以一种易于样式化的方式进行真正的分组。
mu0hgdu04#
使用一些绝对定位和第n个类型的选择器是可能的(旧浏览器不能识别-讨厌!-但媒体查询也不能识别,所以应该降级OK):示范:http://jsfiddle.net/PrJWJ/6/
但是,您需要根据行和列的最大可能数量来扩展它。
qvtsj1bj5#
规范允许将
dl
中的每个组 Package 在div
元素中:为了使用微数据属性或其他适用于整个组的全局属性来注解组,或者只是为了样式化目的,
dl
元素中的每个组可以 Package 在div
元素中。这不会改变dl
元素的语义。使用此div应用必要的样式(例如flex)。