dfn 标签需嵌套在语义明确的父容器(如 p、dt)中,且紧邻完整定义句,title 属性仅辅助机器解析,不可替代人类可读的定义性主谓句。

dfn 标签本身不携带逻辑归属信息,它只标记“此处是术语首次定义的位置”;真正的归属关系由其**父级语义容器**和**上下文句式**共同决定——不是靠 dfn 自身,而是靠它站在哪儿、旁边说了什么。
父容器必须是能承载定义语义的块级元素
浏览器和辅助技术不会把 dfn 当成独立定义单元。它必须嵌套在明确具有“定义上下文”能力的祖先元素中,否则语义断裂。
-
<p><dfn>DOM</dfn> 是文档对象模型的编程接口。</p>✅p是规范认可的定义容器 -
<section><h2><dfn>Accessibility</dfn></h2> <p>指……</p></section>❌h2不是定义容器,dfn被悬空,定义关系丢失 -
<div> <dfn>baseline</dfn> 是 CSS 行内对齐参考线。</div>❌div无语义,需显式加role="definition"或换用section -
<dl> <dt><dfn>URI</dfn></dt> <dd>统一资源标识符……</dd> </dl>✅dt是合法定义容器,dd提供解释,归属清晰
定义语句必须紧邻 dfn,且主谓结构完整
“紧邻”不是指 HTML 字符位置挨着,而是指**自然语言层面的定义完整性**:读者或屏幕阅读器读到 dfn 后,下一句(或同一句内)必须能独立说明该术语是什么。
-
<p><dfn title="Document Object Model">DOM</dfn> 是网页内容的编程接口,以树状结构表示 HTML 文档。</p>✅ 主语(DOM)+ 系动词 + 定义性谓语,自洽 -
<p><dfn>fetch()</dfn> 支持 AbortController。</p>❌ 这是功能描述,不是定义;应改为 “fetch()是一个用于发起网络请求的全局函数” -
<p><dfn>viewport</dfn></p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf"><img src="https://img.php.cn/upload/skill/000/000/081/178956546773641.jpg" alt="html-ppt-to-pdf" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf" class="overflowclass">html-ppt-to-pdf</a> <p class="overflowclass">将使用 `<section class="slide">` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。</p> </div> <a rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> <p>指浏览器渲染区域的可见部分。</p>❌ 跨段落,中间无语义连接,辅助技术无法绑定 -
<p>我们使用 <dfn>CSS</dfn> 来控制样式。</p>❌ “使用……来……” 是用途说明,非定义;应补充 “CSS 是层叠样式表的缩写,用于描述 HTML 元素的呈现方式”
title 属性决定术语“被定义的内容”,但不替代自然语言解释
title 的作用是告诉机器“这个 dfn 实际在定义什么”,但它**不能代替人类可读的定义句**。两者缺一不可:一个供机器解析,一个供人理解。
-
<p><dfn title="Cascading Style Sheets">CSS</dfn> 是一种用来描述 HTML 文档样式的语言。</p>✅title提供标准全称,正文提供通俗解释,归属双保险 -
<p><dfn title="Cascading Style Sheets">CSS</dfn> 是。</p>❌title再准,句子残缺,语义无效 -
<p><dfn title="see section 4.2">API</dfn> 设计要考虑幂等性。</p>❌title不是跳转提示,是术语本体;这里实际定义的是字符串 “see section 4.2” -
<p><dfn title="HTTP">HTTP</dfn> 是超文本传输协议。</p>❌title与内部文本重复,未提供新信息,等于没定义
最难判断的从来不是怎么写 dfn 标签,而是你写的那句话——是否真的在定义它。如果只是举例、对比、引用或暗示,硬套 dfn 反而让语义更模糊。归属感来自上下文的严谨性,而不是标签的嵌套深度。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










