html - 如何制作具有自动宽度的语义html水平定义列表?

标签 html css html-lists flexbox horizontallist

html 中的语义内联定义列表:

<dl>
  <dt>Item 1</dt>
  <dd>def. 1</dd>
  <dt>Item 2</dt>
  <dd>def. 2</dd>
</dl>

如何仅使用 css(无 js)将其呈现为 2 列并自动调整每列宽度?

使用固定宽度或百分比宽度很容易,但我没有找到任何自动宽度的解决方案。

(我尝试了 Flexbox 和多列)

有什么想法吗?

谢谢

最佳答案

一个极其简单的解决方案(语义,完全工作,没有 JavaScript):

dl.horizontal-definition-list {
    display: table;
    min-width: 400px;
}

.horizontal-definition-list dt, .horizontal-definition-list dd {
    padding: 2% 10%;
}

.horizontal-definition-list dt {
    display: table-cell;
    text-align: right;
    white-space: nowrap;
    font-weight: 600;
    background: gold;
}

.horizontal-definition-list dd {
    display: table-cell;
    background: silver;
}

.horizontal-definition-list dd.line-break {
    display: table-row;
}
<dl class="horizontal-definition-list">
    <dt>Term 1</dt>
    <dd>definition 1</dd>
    <dd class="line-break"></dd>
    <dt>Term 2</dt>
    <dd>definition 2</dd>
    <dd class="line-break"></dd>
    <dt>Term 3</dt>
    <dd>definition 3<br>(multiline, no problem)</dd>
    <dd class="line-break"></dd>
    <dt>Term 4</dt>
    <dd class="red-text">definition 4</dd>
</dl>

    

关于html - 如何制作具有自动宽度的语义html水平定义列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39666125/

相关文章:

html - 表格单元格是否有包含 block ?

javascript - 我可以使用 CSS 来更改此 HTML 结构吗?

html - Twitter Bootstrap 导航崩溃 : multiple items on one line?

javascript - HTML 列表 (Li) 通过 Javascript onClick 更改

html - 如何使用 type 属性做 html 多元素列表?

html - 在此上下文中,元素输入不允许作为元素 ul 的子元素

jquery - 检查 div 是否存在于跨度 jQuery 之外

javascript - 通过单击另一个 div 更改 div 中的数据

javascript - 我的值(value)不会文本对齐中心

css - 20px+ 中的特殊字符在 Firefox 3.6 中搞砸了