del和ins必须物理相邻成对出现才能构成有效修订,因空白字符会生成文本节点中断语义关联;datetime须为完整iso 8601格式(含时分秒及时区),cite需指向可验证依据,三者缺一不可。

del 和 ins 必须物理相邻、成对出现,才能被浏览器和屏幕阅读器识别为一次完整修订;单独使用只是加样式,不构成语义化修改。
为什么必须紧挨着写,中间不能有空格或换行
DOM 中的空白文本节点(包括空格、回车、制表符)会被解析为真实节点,打断 del 与 ins 的语义关联。辅助技术无法推断“删了 A 就换成 B”。
- ✅ 正确:
<p>价格:<del datetime="2026-07-20T10:00:00Z">¥199</del><ins datetime="2026-07-22T15:30:00Z">¥159</ins></p> - ❌ 错误:
<p>价格:<del>¥199</del> <ins>¥159</ins></p>(空格是文本节点) - ❌ 危险:
<p>价格:<del>¥199</del><br><ins>¥159</ins></p>(<br>是中间节点)
datetime 时间戳怎么填才有效
无效的 datetime 值不会报错,但所有严肃工具(读屏软件、CMS 版本对比模块、静态站点生成器)会直接忽略该属性——等于没写。
- ✅ 合法格式必须含时分秒和时区信息:
datetime="2026-07-22T09:15:22+08:00"或datetime="2026-07-22T01:15:22Z" - ❌ 常见无效写法:
datetime="2026-07-22"(缺时间)、datetime="2026/07/22"(斜杠)、datetime="2026-07-22 09:15"(缺T和秒) - ⚠️ 注意:
ins的时间不能早于对应del的时间,否则逻辑矛盾(比如“先加后删”)
块级内容怎么安全包裹
del 和 ins 默认是 inline 元素,但 HTML5 允许它们包含 <p></p>、<ul></ul> 等块级内容。问题在于浏览器不会自动处理 margin 塌陷、缩进丢失或列表样式重置。
- ❌ 错误写法:
<ins><p>新增段落</p> <ul><li>第一项</li></ul></ins>→ 列表顶到段落末尾,无缩进 - ✅ 推荐解法:给
ins/del加display: inline-block,比block更安全,避免意外触发 BFC - ✅ 更稳妥做法:把
ins放在<p></p>内部,而非反过来 ——<p><ins>这段文字被新增了</ins></p>
cite 属性不是可选备注,而是可验证依据
cite 的作用是回答“为什么删/为什么加”,不是放模糊说明。空值、伪链接或不可达 URL 会让整个修订记录失去可信度和审计价值。
- ✅ 有效:
cite="/review/2026Q3#sec4"(内部锚点)、cite="https://regulations.gov/2026-12345"(公开政策原文) - ❌ 无效:
cite="编辑建议"(纯文本)、cite=""(空字符串)、cite="null"、cite="https://example.com/404" - ? 多人协作中可复用同一
cite(如一次合规审查),但每个datetime必须独立准确
真正容易被忽略的是:这些标签本身不生成 diff 视图,也不保存历史——它们只是把一次已确认的修改,用机器可读、人可感知的方式标记出来。配对、时间、引用,三者缺一不可;少一个,就从「可追溯修订」退化成「带样式的普通文本」。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











