【发布时间】:2018-04-22 10:53:03
【问题描述】:
我有一些这样的 HTML 结构:
<ul>
<li>
<h2>Item 1</h2>
<dl>
<div><dt>attr1</dt><dd>value a</dd></div>
<div><dt>attr2</dt><dd>value b</dd></div>
<div><dt>attr3</dt><dd>value c</dd></div>
</dl>
</li>
<li>
<h2>Item Another One Here</h2>
<dl>
<div><dt>attr1</dt><dd>value x</dd></div>
<div><dt>attr2</dt><dd>value some bit long</dd></div>
<div><dt>attr3</dt><dd>value z</dd></div>
</dl>
</li>
</ul>
我希望它呈现为:
---------------------------------------------------------------------
Item 1
attr 1: value a attr 2: value b attr 3: value c
---------------------------------------------------------------------
Item Another One Here
attr 1: value x attr 2: value some bit long attr 3: value z
---------------------------------------------------------------------
属性根据其内容的长度相互对齐。
我该怎么做?
我会避免将我的标记更改为<table>,因为它们并不是真正的表格。我曾尝试使用display: table-* 对它们进行布局,但这不适用于标题(它应该占据整行而不是一个单元格)。
【问题讨论】:
-
老实说,我不明白为什么不愿意在这个特定的用例中使用
。你想要实现的是一个结构。
是一个结构元素,为此目的而构建。
的所有内容都非常适合您尝试实现的结构(尤其是列对齐)。表格名声不好,因为它们被滥用并用作样式元素,但它们仍然有目的。
@RobertWade OP 解释说他不想使用<table>标记,因为它不是表格数据,而且 CSS 表格没有colspan像真正的表格一样(全宽标题)。 CSS 网格确实提供了a viable way 来创建此布局,但迄今为止它仍然不完美。 (子网格仍在草稿规范中)同时,我们需要另外使用display: contents来实现这一点@Danield 我也不喜欢使用表格,但提供的示例非常适合它。 “只有表格数据”可以在表格中使用的概念源于放弃表格作为主要布局工具(这是一件非常好的事情),但是 W3C 表格规范没有这样说。 w3.org/TR/html401/struct/tables.html 它显然建议将样式表用于主要布局目的。这是一个漫长而古老的论点,我的评论基于提供的示例。如果 OP 展示了他在布局中实际打算使用的内容,我的看法可能会有所不同。