<dfn>用于语义化标记首次出现且需明确定义的术语,必须置于完整定义语句中,支持title属性优先取值、id锚点跳转,不可仅作样式使用。
<dfn> 不是用来加斜体或做样式装饰的,它的作用是语义化地标记「首次出现且需要明确定义的术语」。用错场景、滥用或仅靠视觉效果判断,会导致可访问性下降和语义丢失。
<dfn>?只在以下情况使用:<dfn> 必须出现在一个完整的定义语句中,且该语句能独立说明术语含义。
validator、baseline),紧接着给出解释<p>、<dd> 或 <section> 等能承载完整语义上下文的块级元素内button)、或仅作强调/高亮的词<dfn> 的术语怎么确定?浏览器和辅助技术不是简单读取 <dfn> 里的文本——它有一套明确的优先级规则来提取“被定义的术语”:
<dfn> 有 title 属性,则以该属性值为准(<dfn title="HyperText Markup Language">HTML</dfn> → 定义的是 "HyperText Markup Language")<dfn> 内部只有一个子元素(如 <abbr>),且该子元素有 title,则取子元素的 title 值<dfn> 自身的文本内容(<dfn>HTML</dfn> → 定义的是 "HTML")title 存在时,<dfn> 内部仍需包含可见文本,不能为空<dfn> 定义?想让读者点击术语跳转到原始定义,得配合 id 和普通链接,但要注意语义合理性:
立即学习“前端免费学习笔记(深入)”;
<dfn> 加 id(如 <dfn id="def-baseline">baseline</dfn>)<a href="#def-baseline">baseline</a> 指向它id:只对真正需要锚点跳转的核心术语这么做<dfn id="x"><a href="#x">x</a></dfn>),这会破坏语义和焦点逻辑<dfn>?因为视觉表现和语义角色完全不是一回事:
<dfn> 在所有现代浏览器中默认斜体,但这只是渲染结果;它的 DOM 接口和 ARIA 隐含角色(role="definition")才是关键<dfn> 提取术语表、构建知识图谱——CSS 做不到这点<em> 或 <span class="term"> 更合适最容易被忽略的一点:很多人把 <dfn> 当成「加粗/斜体开关」,结果在段落中间突然插一个空的 <dfn>,或者把它套在整句定义外面。记住,它必须精准包裹「那个被定义的词本身」,且这个词必须处于它自己的定义语境中——脱离上下文的 <dfn>,等于没有定义。