dfn的id属性仅在术语为核心概念、需精准锚点跳转且定义语义自洽时才可添加;禁止自链、批量添加或脱离定义上下文使用,否则破坏可访问性与语义结构。

dfn 的 id 属性不是“随便加就能跳转”的装饰,它只在明确需要锚点回链、且语义合理时才该用;滥用会导致焦点混乱、屏幕阅读器误读,甚至破坏定义上下文。
什么时候必须给 dfn 加 id?
仅当满足以下全部条件时才加:
– 该术语是文档核心概念(如 baseline、validator),值得被外部或内部反复引用
– 你希望读者能从别处点击链接,精准跳转到这个「定义发生的位置」
– 定义本身已完整、紧邻、语义自洽(例如:<p><dfn id="def-baseline">baseline</dfn> 是 CSS 行内对齐的参考线。</p>)
– 不是为所有 dfn 批量加 id,更不能在标题或列表项里孤立使用
为什么不能在定义句里自链?
常见错误写法:<p><dfn id="x">x</dfn> 是一个变量。详见 @#@#@#@#@#@#@#@#@#@0。</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill6712" title="Wechat HTML Publisher"><img
src="https://img.php.cn/upload/skill/000/000/081/179109368394970.jpg" alt="Wechat HTML Publisher" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill6712" title="Wechat HTML Publisher" class="overflowclass">Wechat HTML Publisher</a>
<p class="overflowclass">直接上传HTML富文本到微信公众号草稿箱。支持完整的HTML格式,无需Markdown转换。</p>
</div>
<a rel="nofollow" href="/xiazai/skill6712" title="Wechat HTML Publisher" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
– 这会让屏幕阅读器在读到 dfn 时立即触发焦点跳转逻辑,打断自然阅读流
– 浏览器可能将 id 解析为“当前元素可被跳转”,但语义上它本就是定义起点,再指向自己无意义
– 搜索引擎和术语提取工具会认为该 id 是冗余标记,降低结构可信度
如何安全实现术语索引跳转?
推荐组合方式:
– 给 dfn 加 id(如 <dfn id="semantics">语义化</dfn>)
– 在术语首次出现后的段落末尾,或独立术语表区域,用普通链接指向它(如 @#@#@#@#@#@#@#@#@#@1)
– 若定义跨段落,配合 aria-describedby 显式绑定解释容器(如 <div aria-describedby="semantics">指使用 <code><nav></nav> 等有含义的标签…










