dfn 标签仅在术语首次出现且紧邻完整定义句时有效,必须与定义语句同处一个 等语义化块级元素内,title 属性优先决定被定义项,不可跨段落、放标题或代码块中。

dfn 标签只在术语首次出现、且紧邻完整定义句时才有效;单独套词、跨段落、放标题或代码块里,等于没写。
dfn 必须和定义语句在同一 里
浏览器和屏幕阅读器不“推理”上下文,只认硬规则:dfn 和它的解释必须出现在同一个 元素内,中间不能插其他标签(比如 、 或换行)。
- ✅ 正确:
DOM 是网页内容的编程接口,以树状结构表示 HTML 文档。
- ❌ 错误:
(跨段落,语义断裂)DOM
它是文档对象模型……
- ❌ 错误:
(Accessibility
不是定义容器) - ❌ 错误:
(<code><dfn>fetch()</dfn></code>
dfn不能嵌套在或中)
title 属性决定“被定义的是什么”,不是可选装饰
dfn 的语义提取有固定顺序:先看 title 属性值,再看子元素(如 )的 title,最后才取自身文本。任一命中即终止,不会 fallback。
- ✅ 正确:
CSS→ 被定义项是"Cascading Style Sheets" - ❌ 错误:
Cascading Style Sheets→ 实际定义的是字符串"CSS",语义反转 - ❌ 错误:
HTML→ 提取结果为空字符串,辅助技术读不出有效术语 - ⚠️ 注意:
fetch()中前后空格会被计入文本,应写作fetch()
缩写与函数名的写法差异
缩略词必须靠 title 提供全称;函数名、语法符号等无需展开时,可省略 title,但内部文本必须非空且准确。
- 缩写场景:
WHO(title是语义核心) - 函数名场景:
querySelectorAll()(不加title,文本即术语) - 嵌套可行但顺序固定:
语义化HTML(abbr在内,dfn包裹整个术语) - ❌ 禁止:
HTML(逻辑错位,abbr不负责定义)
父容器必须是语义化块级元素
dfn 的定义上下文依赖其最近的块级祖先。只有 、、、 这类元素才被规范认可为合法定义环境。
- ✅ 正确:
- HTTP
- 超文本传输协议
- ❌ 错误:
(viewport 是浏览器渲染区域……无定义语义)- ❌ 错误:
(表格单元格不是定义容器)baseline - 替代方案:若必须在布局容器中使用,可加
role="definition"显式声明语义真正难的不是怎么写
dfn标签,而是判断“这句话是不是真的在定义它”——很多所谓定义其实是举例、类比或上下文暗示,这时候硬套dfn反而污染语义。 - ❌ 错误:
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











