默认删除线几乎不可见,需用 css 设置 text-decoration: line-through;必须填写合法 iso 8601 格式 datetime 属性;凡涉及替换须与 成对使用,禁用 或纯 css 替代。

为什么标签默认删除线几乎看不见
浏览器对 <del></del> 的默认样式只是极细的浅灰色删除线,字号小、背景深或高DPI屏下基本不可见。这不是 bug,是 UA stylesheet 的保守设计——它只保证语义存在,不负责视觉传达。
常见错误现象:<del>¥199</del> 在移动端渲染后像普通文本;团队验收时被反馈“没划掉”。
- 必须用 CSS 覆盖
text-decoration,至少加text-decoration: line-through; - 别只改
color:某些系统高对比度模式会强制重置颜色,但保留text-decoration - 如需粗细控制,用
text-decoration-thickness: 2px,但注意 Safari 15.4+ 和 Chrome 99+ 才稳定支持;低版本会回退到浏览器默认 - 兼容 IE8/9?只能写
del { text-decoration: line-through; },其他属性全忽略
datetime 属性不填或填错等于没填
datetime 不是装饰性字段,它是语义链的关键一环。不填或格式非法(比如漏掉 T 或时区),浏览器会静默忽略该属性,控制台可能报 warning,读屏器也不会播报时间信息。
合法值必须是 ISO 8601 格式,例如:<del datetime="2026-05-27T10:30:00+08:00">旧条款</del>;"2026-05-27" 或 "2026-05-27 10:30" 都无效。
- 服务端生成 HTML 时,确保时间戳带完整时区(
+08:00)或用 UTC(Z) - 前端动态插入?用
new Date().toISOString()最安全,避免手动拼接 - 别在
datetime里塞非时间内容,比如datetime="v2.1"—— 语义失效,还可能触发校验失败
单独用 是危险操作
只写 <del>¥199</del> 而不配 <ins></ins>,等于留下一个没有上下文的“删除快照”。用户不知道删了之后是什么,法务或审计时无法追溯变更闭环。
典型问题场景:合同修订页只显示划掉的旧金额,新金额藏在别处;API 文档写 <del>getUserInfo()</del> 却没说明替代方案。
- 业务中凡涉及「替换」,必须成对使用:
<del datetime="...">旧内容</del><ins datetime="...">新内容</ins> - 如果真没新内容(如整段废弃),至少用
cite指向说明文档,例如:<del cite="/docs/deprecation-notice#api-v1">v1 接口</del> - 禁止嵌套:
<del><del>嵌套</del></del>会导致读屏器重复播报“已删除”,且部分浏览器样式异常
别用 或纯 CSS 替代
<s></s> 在 HTML5 中已被标记为“不推荐使用”,它语义是“内容不再准确”,不是“已被删除”。搜索引擎和读屏器对两者的处理逻辑不同——前者可能降权过期促销信息,后者则记录明确的删除事件。
而纯 text-decoration: line-through 更危险:它无任何语义,辅助技术完全感知不到,SEO 也不识别这是“废止项”。
- 电商原价展示?用
<s></s>还算勉强可接受,但更推荐<del></del>+datetime(体现下架时间) - 法律条款修订、接口弃用、价格调整等需留痕场景,必须用
<del></del>,不能妥协 - CSS 类如
.strikethrough只适用于待办事项完成等无语义变更的 UI 场景,别混进业务数据流
<del></del>,却不填 datetime,也不配 <ins></ins>,结果既没留下修改证据,又没说明替代方案,最后变成一堆没人敢删的“幽灵删除线”。











