标签在html5中已被明确废弃,不能用——它仅具删除线样式而无语义,违背结构与表现分离原则;应依场景选用(表已删除但具参考价值)、(表不再准确)或css text-decoration: line-through(纯视觉效果)。

<strike></strike> 标签在 HTML5 中已被明确废弃,**不能用**,浏览器虽可能渲染出删除线,但代码不符合标准,会触发验证警告,也不保证未来兼容性。
为什么 <strike></strike> 不该再用
HTML5 移除了所有纯表现型标签,<strike></strike> 就是典型——它只控制“看起来被划掉”,不表达语义。W3C 要求用语义化标签 + CSS 控制样式。
常见错误现象:<strike>旧价格</strike> 新价格 在现代项目中会被 ESLint、HTMLHint 或 CI 构建流程直接报错。
替代方案:用 <del></del> 表达“已删除内容”
<del></del> 是语义正确、合法且默认带删除线的标签,适用于真实表示内容被移除、撤销或替换的场景。
- 适合场景:版本对比、订单价格变更、法规条文修订
- 浏览器默认样式就是删除线(无需额外 CSS)
- 屏幕阅读器会读作“deleted”,提升可访问性
- 示例:
<del>$99.99</del> <ins>$79.99</ins>
替代方案:用 <s></s> 表示“不再准确但未被移除”
<s></s> 和 <del></del> 都合法,但语义不同:<s></s> 表示内容**仍存在但已过时/不推荐/不正确**(比如已停售型号、失效优惠)。
- 不暗示“谁删的”或“何时删的”,仅标记状态
- 同样默认带删除线,视觉效果一致
- 示例:
<s>iPhone 12</s> iPhone 14 - 若需区分样式(如
<del></del>红色、<s></s>灰色),可用 CSS:del { color: #d32f2f; } s { color: #666; }
CSS 的 text-decoration: line-through 什么时候用
当删除线只是纯视觉需求,且内容**没有语义变化**时,才用 CSS:
- 设计稿要求特殊线型(虚线、双线)、颜色或偏移位置
- 动态添加删除线(如 JS 切换状态:
el.style.textDecoration = 'line-through') - 复用已有类名统一控制样式(避免语义标签滥用)
- 注意:仅用 CSS 无法向辅助技术传达语义,纯装饰场景才适用
真正需要删除线时,先想清楚是“内容被删了”(用 <del></del>)、“内容过时了”(用 <s></s>),还是“只是画条线”(用 CSS)。混用或硬套 <strike></strike> 会在协作、审核和长期维护中悄悄埋雷。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











