和是语义化修订标签,必须成对使用、严格闭合,datetime属性须为iso 8601格式(如2026-05-22t21:30:00z),cite需指向可验证修改依据,不可用于纯样式或隐藏内容。

直接用 <ins></ins> 和 <del></del> 标记修订,不是加条线就完事——语义错、时间戳错、嵌套错,屏幕阅读器会读错,协作系统会漏掉,导出 PDF 时可能完全消失。
datetime 属性必须严格符合 ISO 8601,否则等于没写
浏览器不报错,但辅助技术、CMS 版本比对工具、Git diff 渲染器都会跳过非法格式的时间戳。
-
datetime="2026-05-22T21:30:00Z"✅ 合法(UTC 时间) -
datetime="2026-05-22T21:30:00+08:00"✅ 合法(带本地时区) -
datetime="2026/05/22"❌ 被忽略(斜杠分隔不被规范支持) -
datetime="2026-05-22"❌ 仅日期无时间,多数读屏软件不播报 -
datetime="2026-05-22 21:30"❌ 缺少T和时区,解析失败
建议从后端或构建流程注入时间戳,避免前端 new Date().toISOString() 在用户本地时区生成偏差值;若来自 Git 日志,需先用正则提取并补全秒级精度与 Z 后缀。
cite 属性不是作者名或备注,而是可验证的修改依据链接
cite 的价值在于让“为什么删/为什么加”可追溯。填错就失去协作意义。
-
cite="https://our-cms.example.com/changes/PR-42"✅ 指向真实 PR 页面,含评审记录 -
cite="/docs/policy-v2.1#section-3"✅ 指向内部文档锚点,内容明确说明变更原因 -
cite="编辑说明:运营调整"❌ 纯文本,无法点击、无法校验、读屏软件可能静音 -
cite="https://example.com/404"❌ 404 链接等同于未提供依据
如果修订来自人工校对,cite 应指向会议纪要、邮件快照或 CMS 审核日志 URL;不要用空字符串或占位符。
别把 <ins></ins> 当下划线,也别把 <del></del> 当隐藏手段
它们是语义容器,不是样式开关。滥用会破坏可访问性和 DOM 行为。
-
<del></del>不移除文本:屏幕阅读器仍朗读“已删除:xxx”,搜索引擎仍索引原内容 -
<ins></ins>不自动高亮:默认虚线下划线在 Safari 和旧 Android 浏览器中可能不显色,必须显式设text-decoration - 用
display: none或visibility: hidden包裹<ins></ins>/<del></del>会切断语义,违反 WCAG 1.3.1 - 在按钮或链接内嵌
<del></del>会导致冗余播报(如“已删除:提交按钮”),干扰操作流
真正需要“软删除”逻辑?后端应维护独立状态字段,前端只渲染可见状态;<del></del> 只用于标记“这里曾有、现已删”的历史事实。
嵌套和包裹块级元素时,display 和闭合必须手动控制
<ins></ins> 和 <del></del> 是 inline 元素,但 HTML5 允许包裹 <p></p>、<ul></ul> 等块级内容——前提是你要管好渲染和结构。
- 直接
<ins><p>段落</p></ins>可能导致段间距塌陷、列表缩进丢失 - 解决方案一:给
<ins></ins>或<del></del>加display: inline-block(比block更安全,不触发 BFC) - 解决方案二:不包裹整块,改用多个内联标签分别标记句内变动(更可控、更利于 diff 对齐)
- 严禁跨块嵌套:如
<p><del>开头</del></p> <p>结尾</p>,浏览器会自动截断,DOM 结构不可靠 - 严禁
<del><ins>...</ins></del>:语义矛盾(既删又插),应改为相邻的<del>...</del><ins>...</ins>
最易被忽略的是闭合问题:富文本编辑器粘贴、JS 动态插入、正则替换生成 HTML 时,极易漏掉 或 ,导致后续所有 document.querySelectorAll('ins') 查询失效,React/Vue 组件重渲染异常——务必在 Elements 面板里逐行检查 DOM 是否完整。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











