在HTML5中不合法,是唯一被规范支持的删除线标签;语义为内容过时但有参考价值,不可包裹表格行或添加datetime属性。

<s></s> 是现代标准,<strike></strike> 已被 HTML5 明确废弃
直接结论:<strike></strike> 在 HTML5 中不合法,任何使用它的文档都无法通过 W3C 验证;<s></s> 是当前唯一被规范支持的、语义明确的删除线标签(除 <del></del> 外)。它不是“替代品”,而是标准演进后的正式成员。
为什么 <strike></strike> 被淘汰?不只是“老了”
废弃原因不是浏览器不支持,而是语义缺失 + 规范失控:
-
<strike></strike>从 HTML 2.0 就存在,但始终没有定义其语义——它只说“要划掉”,没说“为什么划掉”“是否还保留意义” - HTML4 和 XHTML 1.0 Strict 已标记为 deprecated(不赞成使用),W3C 明确要求用
<del></del>或<s></s>替代 - 浏览器即使渲染了
<strike></strike>,也会在 DOM 解析时自动修正结构(比如把<strike><tr>... 拆成无效片段),导致样式错位或辅助技术无法识别 <h3> <code><s></s>的真实语义边界:别当“划线快捷键”用<s></s>不是视觉装饰工具,它声明的是内容状态变化:- 适用场景:
¥199¥99(原价失效)、旧版 API 接口(已停用)、第 3.2 条(条款废止但需存档对照) - 不适用场景:用户点击“完成任务”后动态划掉待办项(这是 UI 反馈,该用 CSS 类);Git diff 中标记被删代码(该用
<del></del>+datetime) - 关键限制:
<s></s>不支持cite或datetime属性,强行添加会被校验器报错;嵌套<del><s>xxx</s></del>会混淆语义,屏幕阅读器可能重复播报“deleted”和“strikethrough”
表格整行划线时,
<s></s>必须拆到每个<td> 里 <p>试图用 <code><s><tr>...</tr></s>是无效结构——<s></s>属于短语内容(phrasing content),不能包裹<tr> 这类流内容(flow content)元素。浏览器会把它“踢出”表格上下文,导致样式丢失或 DOM 错乱。<p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p> <p>正确做法只有这一种:</p> <pre class="brush:php;toolbar:false;"><tr> <td><s>Row 2 Col 1</s></td> <td><s>Row 2 Col 2</s></td> <td><s>Row 2 Col 3</s></td> </tr></pre> <p>如果整行语义是“已被逻辑删除”,优先选 <code><del></del>;如果是“信息过时但仍有参考价值”,才用<s></s>。两者都不能省略对每个单元格的包裹——这是 HTML 结构约束,不是样式取舍问题。 - 适用场景:



















