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

如何实现<dt>与<dd>并排布局,长<dt>时<dd>自动下移?

实现无需手动加类的定义列表双列自适应布局

方案一:语义化分组+容器查询(推荐)

通过给<dt>和<dd>添加语义化分组容器,结合CSS容器查询自动判断<dt>内容长度,无需手动添加任何类,完美匹配需求:

HTML代码(符合语义规范)

<dl>
  <div>
    <dt>one</dt>
    <dd>one</dd>
  </div>
  <div>
    <dt>two that is longer than 10em</dt>
    <dd>two moves down automatically without manual classes</dd>
  </div>
  <div>
    <dt>three</dt>
    <dd>three</dd>
  </div>
</dl>

CSS代码

/* 外层定义列表布局 */
dl {
  display: grid;
  gap: 0.8em; /* 调整组与组之间的垂直间距 */
}

/* 每个dt+dd的分组容器 */
dl > div {
  container-type: inline-size; /* 启用容器查询 */
  display: grid;
  grid-template-columns: minmax(10em, max-content) 1fr; /* 默认双列:左列最小10em,最大为内容宽度;右列占剩余空间 */
  gap: 0 1em; /* 调整dt和dd之间的横向间距 */
}

dt {
  white-space: nowrap; /* 强制dt不换行 */
}

dd {
  margin: 0; /* 清除默认边距 */
}

/* 容器查询:当分组宽度超过10em(即dt内容过长),切换为单列布局 */
@container (width > 10em) {
  dl > div {
    grid-template-columns: 1fr; /* 改为单列布局 */
  }
  
  dd {
    padding-left: 10em; /* 保持和双列布局左列一致的缩进 */
  }
}

效果说明

  • 当<dt>内容长度≤10em时,维持双列布局:<dt>在左列(最小宽度10em),<dd>在右列
  • 当<dt>内容长度>10em时,自动切换为单列布局:<dt>占满整行,<dd>下移并缩进10em
  • 全程无需手动干预,完全自动适配

方案二:不修改原有HTML结构(依赖高级CSS特性)

如果希望保留原始<dl>结构,可利用CSS的:has选择器和容器查询实现,但兼容性略有限制:

HTML代码(保持原结构)

<dl>
  <dt>one</dt>
  <dd>one</dd>
  <dt>two that is longer than 10em</dt>
  <dd>two moves down automatically without manual classes</dd>
  <dt>three</dt>
  <dd>three</dd>
</dl>

CSS代码

dl {
  display: grid;
  grid-template-columns: minmax(10em, max-content) 1fr;
  gap: 0.5em 1em;
}

dt {
  white-space: nowrap;
  grid-column: 1;
  container-type: inline-size;
}

dd {
  grid-column: 2;
  margin: 0;
}

/* 当dt容器宽度超过10em时,调整布局 */
@container (width > 10em) {
  dt:has(+ dd) {
    grid-column: 1 / -1; /* dt占满整行 */
  }
  
  dt:has(+ dd) + dd {
    grid-column: 1 / -1; /* dd占满整行 */
    padding-left: 10em; /* 缩进对齐左列宽度 */
  }
}

效果说明

  • 无需修改原有HTML结构,自动适配<dt>长度
  • 兼容性要求:Chrome 105+、Firefox 110+、Safari 16.4+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:57