dfn标签唯一作用是标记术语首次被正式定义的位置,必须包裹术语本身且紧邻定义语句;其术语值按title属性、子元素title、文本内容三级规则提取,影响无障碍和结构化数据提取而非样式或SEO。

dfn 标签不是为了加斜体或做样式,它的唯一作用是告诉浏览器和辅助技术:“这个词在此处被正式定义”——仅此而已。
什么时候必须用 dfn?
只在术语首次出现、且紧邻其定义语句时才适用。比如技术文档开篇写“dfn 是 HTML 中标记定义位置的内联元素”,这时 dfn 就该被包裹在 <dfn>dfn</dfn> 里。
以下情况不用:
- 重复提及同一术语(如后文再写“
dfn元素支持 title 属性”) - 术语出现在表格、代码块、标题中(
dfn只允许嵌套段落级内容,不能作为<h2>或<pre>的子元素) - 定义不完整,比如只有“
<dfn>DOM</dfn>”而后面没接任何解释性句子
dfn 的术语值到底怎么算?
浏览器和屏幕阅读器靠三步规则提取被定义的术语文字,顺序不可颠倒:
立即学习“前端免费学习笔记(深入)”;
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 如果
dfn有title属性,就取它的值(例如<dfn title="Document Object Model">DOM</dfn>→ 定义的是 “Document Object Model”) - 否则,若它只包含一个带
title的子元素(如<dfn><abbr title="Cascading Style Sheets">CSS</abbr></dfn>),就取那个title - 否则,直接取
dfn的文本内容(如<dfn>fetch()</dfn>→ 定义的是 “fetch()”)
注意:空格、换行、前后标签都会影响文本内容提取,不要写成 <dfn> fetch() </dfn>。
为什么加了 dfn 却没看到斜体?
因为 dfn 本身不带强制样式,浏览器默认用斜体只是惯例,不是规范要求。如果你用了 CSS 重置(比如 dfn { font-style: normal; }),斜体就没了——这完全合法,也不影响语义。
真正受影响的是:
- 屏幕阅读器可能对
dfn内容做特殊语音提示(如略作停顿或变调) - 某些文档生成工具(如 Web Scraping 工具、知识图谱抽取器)会把
dfn+ 紧邻段落作为术语-定义对提取 - SEO 无实质增益,但结构化语义更利于长期维护
容易被忽略的一点:如果定义跨多个段落(比如先一句话引入,下一段才展开),dfn 必须放在第一段的术语上,且整个定义区域需逻辑连贯;不能把 dfn 放在最后一段里——语义绑定只认“首次出现+就近定义”这一条路径。


















