、、是html原生语义化标签,专用于构建“术语—解释”配对结构:为容器,定义术语,提供解释;必须嵌套使用,顺序固定,支持一词多义或多词一义,适用于术语表、faq等场景。

什么是<dl></dl>、<dt></dt>、<dd></dd>?
它们不是“定义新词汇”的编程式扩展,而是 HTML 原生的语义化标签组合,专用于表达「术语—解释」配对关系。浏览器不解析为新标签名,也不需要注册;它只是结构化标记,用于词汇表、FAQ、API 参数说明等场景。
<dl></dl>必须嵌套<dt></dt>和<dd></dd>吗?
是的,且顺序和配对有硬性要求:
-
<dl></dl>只能直接包含<dt></dt>或<dd></dd>,不能放<p></p>、<div>等其他元素 <li>每个<code><dt></dt>代表一个术语(如“HTTP”),后面必须紧跟至少一个<dd></dd>(解释) - 一个
<dt></dt>可对应多个<dd></dd>(比如多角度解释),但一个<dd></dd>不能悬空——必须紧接在<dt></dt>之后或另一个<dd></dd>之后 - 错误写法:
<dl><dd>解释</dd></dl>(缺<dt></dt>)或<dl> <dt>术语</dt> <p>乱入段落</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件"><img src="https://img.php.cn/upload/manual/000/000/010/170901721079108.gif" alt="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" class="overflowclass">使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件</a> <p class="overflowclass">如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更</p> </div> <a rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> <dd>解释</dd> </dl> -
<dt></dt>里可以放<code>、<em></em>甚至短链接,但不宜塞大段文本或块级结构 -
<dd></dd>可包含<p></p>、<ul></ul>、<pre class="brush:php;toolbar:false;"></pre>、<table>,适合展开说明 <li>不要用<code><dl></dl>替代<ul></ul>做普通列表——它不表示“顺序”或“项目并列”,只表示“定义关系” - 无障碍支持好:屏幕阅读器会明确读出“术语:……;定义:……”,所以
<dt></dt>内容必须简洁可读(避免“详见下文”这类模糊表述) - CSS 选择器更精准:
dl dt { font-weight: bold; }比.term { ... }更可靠(无需担心 class 名冲突或遗漏) - JavaScript 操作更语义化:例如
document.querySelectorAll('dl > dt')直接拿到所有术语节点,无需遍历 class - 容易被忽略的是:部分旧版微信内置浏览器或简易 RSS 阅读器会丢弃无语义的
<div>,但保留<code><dl></dl>结构,这对纯内容分发场景很关键
如何让定义列表支持多级嵌套或复杂内容?
<dt></dt>和<dd></dd>本身是容器,允许嵌套任意合法 HTML 元素,但要注意语义连贯性:










