必须配 CSS 才算真正生效,因其默认中划线极细难见;需用 text-decoration-thickness 等强化样式,并添加 datetime 和 cite 属性以保障语义与可追溯性。

<del></del> 标签默认渲染为中划线(single strikethrough),但它不是“带中划线的普通文本”,而是语义化标记——浏览器、屏幕阅读器、搜索引擎都把它识别为“已被删除的内容”。直接依赖默认样式会出问题,必须配合 CSS 显式控制。
为什么 <del></del> 的中划线在页面里几乎看不见
浏览器对 <del></del> 的默认样式极简:text-decoration: line-through 且颜色与正文一致、无粗细/偏移控制。结果就是一条细灰线叠在黑色文字上,尤其在小字号或高分辨率屏下极易忽略。
- Chrome/Firefox/Safari 默认不加粗、不改色、不调整
text-decoration-thickness或text-underline-offset - 旧版 Edge(基于 EdgeHTML)甚至不支持
text-decoration的现代属性,导致划线位置不准 - 无障碍工具可能读出“已删除”,但用户视觉上完全感知不到变化
<del></del> 必须配 CSS 才算真正生效
仅写 <del>¥199</del> 是半成品。真实项目中需强制覆盖默认表现:
- 基础强化:
del { text-decoration: line-through; text-decoration-thickness: 2px; text-underline-offset: 3px; color: #d32f2f; } - 兼容性兜底:IE11 不支持
text-decoration-thickness,可加border-bottom: 2px solid #d32f2f;模拟(注意避免与下划线冲突) - 避免全局污染:用
del.price-old或del.revision等 class 区分语义场景,防止价格删除和文档修订样式互相干扰
cite 和 datetime 属性不是可选装饰,而是关键元数据
这两个属性让删除行为可追溯、可审计。没它们,<del></del> 就退化成纯视觉标签,失去语义价值。
立即学习“前端免费学习笔记(深入)”;
-
datetime值必须是合法 ISO 8601 字符串,如2026-04-27T09:45:00+08:00;错写成2026/04/27会导致属性被忽略 -
cite应指向具体解释页,不是首页或空 URL;cite="#"或cite="reason.txt"无法提供有效上下文 - 服务端渲染时若
datetime来自数据库时间字段,需确认时区处理——未标准化的时间字符串在 Safari 中可能被解析为空
别把 <s></s> 当作 <del></del> 的快捷写法
<s></s> 表示“内容过时/不再准确”,<del></del> 表示“内容被正式移除”。两者语义不可互换,混用会导致语义污染。
- 电商价签用
<s></s>合理(原价失效 ≠ 被删),但合同条款修订必须用<del></del>(法律意义上已撤回) - React/Vue 项目中,
<s></s>在严格模式下可能触发警告,部分 ESLint 插件会报no-deprecated-elements - 某些 CMS 导出 HTML 时自动把
<del></del>转成<s></s>,需在构建流程中加校验步骤
真正容易被忽略的是:删除痕迹是否需要长期保留?如果只是临时隐藏,用 CSS class 切换更轻量;如果涉及法律存证或协作审计,<del datetime="" cite=""></del> 这套组合才是刚性要求——样式可以重写,但缺失的 datetime 一旦发布就无法补全。



















