dt标签仅允许内联元素,禁止块级标签;多术语共用一解释需多个dt配一个dd;dt后必须紧跟dd,不可插入其他标签;一术语多义时应用一个dt配多个dd。

dt 标签只能放术语本身,不能塞解释或结构化内容
dt 的唯一职责是声明一个术语、参数名、问题或名词——它不是容器,不负责承载解释,也不该承担排版任务。常见错误是往 dt 里加 p、div、甚至 h3,这会破坏屏幕阅读器对“术语-定义”配对的识别逻辑。
允许的内容仅限内联元素:span、em、strong、code(比如写 <dt><code>timeout</code></dt> 是合理的);禁止出现任何块级标签,包括 br。
- ✅ 正确:
<dt>API Key</dt>、<dt><code>--help</code></dt> - ❌ 错误:
<dt><p>API Key</p></dt>、<dt><div class="term">API Key</div></dt> - ⚠️ 注意:HTML5 不允许
dt包含h1–h6,即使视觉上想突出,也该用 CSS 控制字体粗细和大小,而非语义降级
多个同义术语共用一个解释时,连续写多个 dt 是标准写法
当几个词指向同一概念(如别名、缩写、不同拼写),应把它们拆成多个 dt,再跟一个 dd。浏览器和读屏器会自动将每个 dt 关联到其后第一个未被占用的 dd。
这种写法合法、简洁,且语义明确:
<dl> <dt>HTTP</dt> <dt>Hypertext Transfer Protocol</dt> <dd>客户端与服务器通信的应用层协议,基于请求-响应模型。</dd> </dl>
- 不要写成
<dt>HTTP / Hypertext Transfer Protocol</dt>——人为合并反而削弱可访问性 - 避免中间插入其他标签(如注释、空格文本节点),否则可能干扰解析顺序
- 动态渲染时需确保 JSON 数据结构能映射为「多个
dt→ 单个dd」,而不是拼接字符串塞进一个dt
dt 后面必须紧跟 dd,否则语义链断裂
HTML 解析器靠位置关系建立 dt 和 dd 的归属。如果 dt 后没跟 dd,或者中间插了别的标签(比如 div 或注释),后续的 dd 就可能被挂到错误的 dt 上,甚至变成“孤立 dd”——这是 HTML 验证失败项,也会让读屏器跳过解释。
- ✅ 正确顺序:
<dt>DOM</dt><dd>Document Object Model...</dd> - ❌ 危险写法:
<dt>DOM</dt><div class="spacer"></div><dd>...</dd> - ⚠️ 特别注意:JS 渲染时若条件判断漏掉
dd(例如只在 status === 'active' 时渲染dd),会导致部分dt没有对应解释,结构失效
术语需要强调多义性?一个 dt 配多个 dd 才是正解
当一个词在不同上下文中有不同含义(如 “闭包”、“重载”、“事件循环”),应该用同一个 dt 后接多个 dd,而不是硬拆成多个 dt 加冗余前缀。
这样既保持术语统一性,又让读屏器自然播报为「术语:闭包,定义一:……,定义二:……」:
<dt>闭包</dt> <dd>JavaScript 中函数与其词法环境的组合,可访问外部作用域变量。</dd> <dd>数学中指集合在某种运算下保持封闭的性质。</dd>
- 多个
dd是并列关系,不是嵌套——不要把第二个dd塞进第一个里面 - CSS 控制间距时,建议用
dd + dd选择器加顶部间距,而非依赖默认 margin - 别用
p在单个dd里模拟多段落,那会模糊语义边界;多个dd才是语义正确的分段方式
<dt>xxx</dt><dd>yyy</dd>,而是确保所有 dt 都严格代表「可被独立命名和引用的实体」,且每个都真实存在对应的 dd。一旦结构松动,无障碍支持、SEO 提取、甚至 JS 动态操作都会出隐性问题。


















