应使用标签标记真实删除行为,如价格调整、法律修订等,并搭配及iso 8601格式的datetime属性;仅用于标识自然失效或不推荐内容,不支持时间与来源属性。

用 <del></del> 标签标记已删除内容
语义最清晰、浏览器兼容性最好,适合表达“这段文字曾存在但已被移除”的含义。<del></del> 是 HTML 原生语义标签,会被屏幕阅读器识别为删除内容,对可访问性友好。
常见错误是把它当样式工具滥用——比如仅为了视觉划线而用 <del></del>,结果破坏了语义。如果只是装饰性划线(如价格对比中的原价),应改用 CSS。
-
<del>¥199</del> ¥99—— 语义正确,适合电商页面标原价 - 不要嵌套
<del></del>在<p></p>外或与<ins></ins>混用时忽略时间属性(datetime) - 部分旧版 IE 对
<del></del>默认样式支持弱,建议配合简单 CSS 重置:del { text-decoration: line-through; }
用 CSS text-decoration: line-through 控制样式
当需要精细控制删除线颜色、粗细、位置或与其他修饰线(如下划线)共存时,CSS 是唯一选择。HTML 标签无法设置这些。
注意:直接写 style="text-decoration: line-through" 虽快但难维护;推荐用 class 统一管理。
- 删除线默认是单色、居中、细线,要改颜色需加
text-decoration-color(Chrome 64+、Firefox 70+ 支持) - 若需双线或波浪线,
text-decoration-style可设为double或wavy,但 Safari 对wavy支持不稳定 - 避免在行内元素上叠加多个
text-decoration(如同时underline和line-through),渲染可能错位
避免用 <strike></strike> 或过时写法
<strike></strike> 已被 HTML5 废弃,W3C 明确不推荐使用。它只提供视觉效果,无语义,且现代浏览器虽仍渲染,但校验工具会报 warning。
同样,<s></s> 标签虽被保留,但它表示“无需关注的内容”(如拼写错误、过时信息),语义不同于“已删除”。误用会导致 SEO 和无障碍问题。
- 别写
<strike>旧方案</strike>—— 改用<del></del>或 CSS -
<s></s>适合标注明显错误的文本,例如:<s>地球是平的</s>,而非业务逻辑中的删除操作 - 任何用
font标签加size或color模拟删除线的做法,都违背结构与样式的分离原则
React/Vue 等框架里怎么安全加删除线
框架中动态渲染删除线,关键是避免直接拼接 HTML 字符串(XSS 风险),也别在 JSX/Template 中硬编码 <del></del> 却忽略数据状态变化。
典型坑是:条件渲染没同步更新删除状态,导致视觉与实际数据不一致。
- React 中优先用 className 控制:
<span classname="{isDeleted" :>{text}</span>,再配 CSS 规则 - Vue 模板中慎用
v-html渲染含<del></del>的字符串,除非内容完全可信 - 服务端返回富文本含
<del></del>时,前端需确认其合法性(如通过 DOMPurify 过滤)
<del></del> 标签背后,可能意味着一次 API 删除调用是否完成;而一段 line-through CSS,可能在暗色模式下因颜色对比度不足而不可见。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











