HTML用<ins>和<del>语义化标记增删内容,支持datetime和cite属性记录时间与依据,禁用纯样式标签替代,摘要需独立呈现并关联具体修改。

用 <ins> 和 <del> 标记增删内容
HTML 本身不提供“版本摘要”功能,但可以用语义化标签直观呈现文本变动。核心是 <ins>(inserted)标新增,<del>(deleted)标删除——浏览器默认渲染为下划线和删除线,且支持 datetime 和 cite 属性记录时间与依据。
常见错误是把它们当样式标签乱套:<ins><span style="color:green">... 这样反而削弱语义;也有人误用 <u> 或 <s>,但它们无语义、无障碍支持差、SEO 不识别。
-
<ins datetime="2024-06-15T14:22">中的datetime值必须符合 ISO 8601(如带时区或至少精确到秒),否则被忽略 - 若整段增删,直接包
<p>:<ins><p>新增段落内容</p></ins>,不要只包文字再手动换行 -
cite可指向修改说明页,例如cite="/changelog#v2.1",方便读者溯源
如何批量标注“新增2段,删1段”这类摘要
摘要本身不属于文档正文变更,而是元信息,不能塞进 <ins>/<del> 里。正确做法是用独立区块说明,再让实际内容对应上。
典型结构是:先放一段简明摘要(可用 <details><summary> 折叠),再跟修订后的完整 HTML 内容,其中每处增删都带 datetime 属性。这样既清晰又可访问。
立即学习“前端免费学习笔记(深入)”;
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 摘要文字建议写成:“本次更新:新增 2 段(见
<ins>),删除 1 段(见<del>)”,避免模糊表述如“稍作调整” - 不要靠 CSS 隐藏/显示
<ins>/<del>来模拟“摘要开关”,那会破坏语义和屏幕阅读器逻辑 - 如果需导出为纯文本摘要,得靠 JS 提取所有
<ins>和<del>节点数量并统计,HTML 本身不自动汇总
兼容性与输出场景要注意什么
<ins> 和 <del> 在所有现代浏览器中完全支持,包括 Safari iOS 和 Android WebView,但老版本 IE(≤8)仅支持基础渲染,不认 datetime 属性。
真正容易出问题的是下游处理环节:
- Markdown 转 HTML 工具(如 Pandoc、Typora)通常不解析
++新增++或--删除--为<ins>/<del>,需手动配置或后处理 - 静态站点生成器(如 Hugo、Jekyll)若开启 HTML 压缩,可能意外删掉空格或换行,导致
<ins><p>A</p><p>B</p></ins>渲染错位,建议关闭压缩或加white-space: pre-wrap - PDF 导出工具(如 wkhtmltopdf)对
<ins>下划线的支持不稳定,有时需额外 CSS 强制:<style> ins { text-decoration: underline; } </style>
别忘了 title 属性这个轻量补充手段
当增删内容较复杂(比如删了一整段带列表的说明),光靠删除线不够传达意图。这时在 <del> 上加 title 是最轻量的补救方式。
例如:<del datetime="2024-06-15" title="因 API v3 废弃,此鉴权流程已移至 /auth/token"><p>旧版 OAuth 步骤...</p></del>。鼠标悬停即见原因,也不影响语义和可访问性。
注意 title 是辅助信息,不能替代正文说明;也不能堆砌长句,建议控制在 120 字以内。真正关键的变更逻辑,还是得写在摘要或文档更新日志里——HTML 标签只负责“标在哪”,不负责“为什么标”。


















