用于语义化标记首次出现且需明确定义的术语,必须置于完整定义语句中,支持title属性优先取值、id锚点跳转,不可仅作样式使用。

<dfn></dfn> 不是用来加斜体或做样式装饰的,它的作用是语义化地标记「首次出现且需要明确定义的术语」。用错场景、滥用或仅靠视觉效果判断,会导致可访问性下降和语义丢失。
什么时候该用 <dfn></dfn>?
只在以下情况使用:<dfn></dfn> 必须出现在一个完整的定义语句中,且该语句能独立说明术语含义。
- 文档中第一次出现某个技术术语(如
validator、baseline),紧接着给出解释 - 定义出现在
<p></p>、<dd></dd>或<section></section>等能承载完整语义上下文的块级元素内 - 你希望屏幕阅读器识别这是“术语定义”,或未来支持自动生成术语表
- 不适用于重复出现的术语、已知通用词(如
button)、或仅作强调/高亮的词
<dfn></dfn> 的术语怎么确定?
浏览器和辅助技术不是简单读取 <dfn></dfn> 里的文本——它有一套明确的优先级规则来提取“被定义的术语”:
- 如果
<dfn></dfn>有title属性,则以该属性值为准(<dfn title="HyperText Markup Language">HTML</dfn>→ 定义的是 "HyperText Markup Language") - 如果
<dfn></dfn>内部只有一个子元素(如@#@#@#@#@#@#@#@#@#@0指向它 - 不要给每个术语都加
id:只对真正需要锚点跳转的核心术语这么做 - 避免在定义语句内部再链接回自身(比如
<dfn id="x">@#@#@#@#@#@#@#@#@#@1</dfn>),这会破坏语义和焦点逻辑
为什么不用 CSS 替代 <dfn></dfn>?
因为视觉表现和语义角色完全不是一回事:
- CSS 可以让任何标签变斜体,但无法告诉屏幕阅读器“这个词是刚被定义的术语”
-
<dfn></dfn>在所有现代浏览器中默认斜体,但这只是渲染结果;它的 DOM 接口和 ARIA 隐含角色(role="definition")才是关键 - 搜索引擎和文档分析工具可能利用
<dfn></dfn>提取术语表、构建知识图谱——CSS 做不到这点 - 如果你只是想让某词看起来特别,用
<em></em>或<span class="term"></span>更合适
最容易被忽略的一点:很多人把 <dfn></dfn> 当成「加粗/斜体开关」,结果在段落中间突然插一个空的 <dfn></dfn>,或者把它套在整句定义外面。记住,它必须精准包裹「那个被定义的词本身」,且这个词必须处于它自己的定义语境中——脱离上下文的 <dfn></dfn>,等于没有定义。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











