You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用CSS Grid在不修改HTML时将dt与dd配对显示在单列

问题:实现dl元素的每行两列分组布局

现有如下HTML结构,需将每组<dt>与<dd>放在同一列,实现每行两列的布局,但使用CSS Grid时会将单个<dt>、<dd>视为独立列,且无法修改HTML结构。

原始HTML代码

<dl>
    <dt>Term 1</dt>
    <dd>Definition 1</dd>
    <dt>Term 2</dt>
    <dd>Definition 2</dd>
    <dt>Term 3</dt>
    <dd>Definition 3</dd>
    <dt>Term 4</dt>
    <dd>Definition 4</dd>
</dl>

目标布局

Term 1: Definition 1        | Term 2: Definition 2
Term 3: Definition 3        | Term 4: Definition 4

错误尝试的CSS

dl {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

dt, dd {
    margin: 0;
}

dt:nth-of-type(odd),
dd:nth-of-type(odd) {
    grid-column: 1;
}

dt:nth-of-type(even),
dd:nth-of-type(even) {
    grid-column: 2;
}

dt {
    font-weight: bold;
}

dd {
/*    margin-left: 20px;*/
}

错误原因

这段代码仅按奇偶性给单个<dt>、<dd>分配列,但未控制它们的行归属,导致第1个<dd>会和第2个<dt>抢占同一行位置,最终布局混乱,无法形成每组dt+dd在同一列的效果。

正确解决方案

通过选择器精准绑定每组dt+dd的列和行,确保每组作为整体占据网格的对应区域:

固定4组的解决方案

dl {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}

dt, dd {
  margin: 0;
}

/* 第1、3组(奇数组)绑定到第1列 */
dt:nth-of-type(2n-1),
dt:nth-of-type(2n-1) + dd {
  grid-column: 1;
}

/* 第2、4组(偶数组)绑定到第2列 */
dt:nth-of-type(2n),
dt:nth-of-type(2n) + dd {
  grid-column: 2;
}

/* 控制每组的行位置:第1/2组在第1行,第3/4组在第2行 */
dt:nth-of-type(1), dt:nth-of-type(1)+dd { grid-row: 1; }
dt:nth-of-type(2), dt:nth-of-type(2)+dd { grid-row: 1; }
dt:nth-of-type(3), dt:nth-of-type(3)+dd { grid-row: 2; }
dt:nth-of-type(4), dt:nth-of-type(4)+dd { grid-row: 2; }

dt {
  font-weight: bold;
}

/* 可选:给dt添加冒号,模拟目标布局的格式 */
dt::after {
  content: ": ";
}

支持任意组数的灵活方案

dl {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  grid-auto-flow: dense;
}

dt, dd {
  margin: 0;
}

/* 奇数序号的dt(第1、3、5...个)及紧随的dd放在第1列 */
dt:nth-child(4n-3),
dt:nth-child(4n-3) + dd {
  grid-column: 1;
}

/* 偶数序号的dt(第2、4、6...个)及紧随的dd放在第2列 */
dt:nth-child(4n-1),
dt:nth-child(4n-1) + dd {
  grid-column: 2;
}

dt {
  font-weight: bold;
}

dt::after {
  content: ": ";
}

内容的提问来源于stack exchange,提问作者Jack Sud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:47:36