del和ins必须物理紧邻成对出现,因dom中插入文本或元素节点会中断语义连续性;datetime须严格合法且带时区;包裹块级元素需用inline-block或拆分为内联粒度;导出时需服务端转换而非依赖css伪元素。

del 和 ins 不是装饰性标签,它们在 DOM 中构成可解析的修订结构——单独存在、时间戳错误、物理不相邻,都会让这个结构失效。
为什么del和ins必须物理紧邻成对出现
浏览器和辅助技术不靠空格、换行或 CSS 间距推断“删了什么、替换成什么”。DOM 中一旦插入文本节点(比如空格、中文顿号、换行符),就会中断语义连续性:
-
<del datetime="2026-06-20T10:00:00Z">旧条款</del><ins datetime="2026-06-20T10:00:15Z">新条款</ins>✅ 正确配对 -
<del datetime="">旧条款</del>,<ins datetime="">新条款</ins>❌ 逗号是文本节点,破坏配对 -
<del>A</del><br><ins>B</ins>❌<br>是元素节点,隔开即失效
多人并行修改时,服务端必须按 datetime 排序合并,不能简单拼接——否则生成 <del>A</del><ins>B</ins><del>C</del><ins>D</ins> 这类无法解读的链式结构。
datetime 格式错等于没写,且不报错
非法 datetime 值不会触发控制台警告,但所有严肃工具(读屏软件、CMS 版本对比模块、Git diff 渲染器)会静默忽略它:
- ✅ 合法:
datetime="2026-06-20T14:22:00Z"(UTC)、datetime="2026-06-20T22:22:00+08:00"(带偏移) - ❌ 无效:
datetime="2026-06-20"(缺时间)、datetime="2026/06/20"(斜杠分隔)、datetime="2026-06-20 14:22"(缺T和秒) - 前端用
new Date().toISOString()生成时,用户本地时区偏差会导致时间戳失真;生产环境应从后端注入或 Git 提交日志提取,并补全秒级精度与Z后缀
包裹块级元素时,display: inline-block 是唯一稳妥解法
del 和 ins 默认是 inline 元素,强行包裹 <p></p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf"><img
src="https://img.php.cn/upload/skill/000/000/081/178956546773641.jpg" alt="html-ppt-to-pdf" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf" class="overflowclass">html-ppt-to-pdf</a>
<p class="overflowclass">将使用 `<section class="slide">` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。</p>
</div>
<a rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div> 或 <ul></ul> 会触发浏览器隐式修正,导致段间距塌陷、列表缩进丢失、React/Vue diff 失效:
- ❌ 危险:
<ins><p>新增段落</p> <ul><li>项1</li></ul></ins> - ✅ 推荐:拆成内联粒度,如
<p><ins>新增首句</ins></p> <p><ins>新增次句</ins></p> - ✅ 替代方案:若必须包整块,显式加 CSS
ins, del { display: inline-block; },仅限简单结构;复杂布局优先走 JS DOM 操作
导出为 PDF 或纯文本时,del/ins 默认消失
没有通用 fallback 机制。浏览器渲染时保留语义,但服务端导出或打印预览中,这些标签会被剥离,只剩内部文字:
- 法律文档、合同更新等场景,必须提前约定规则:比如服务端解析 HTML 时,将
<del>X</del><ins>Y</ins>转为[删除] X [插入] Y再导出 - 不要依赖 CSS
::before/::after生成文本替代——屏幕阅读器不读伪元素,且导出时同样不可见 - 真正难的不是语法是否合法,而是每次插入前,得确认这次改动是否值得被机器追溯:运营文案“限时加赠”不该用
ins,而第 3.2 条法律条文修订必须用
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










