应优先用表示真实删除行为,如法律修订、api下线;用表示状态过时,如停售商品、废弃兼容性。核心依据是是否发生编辑动作,且datetime须严格遵循iso 8601格式。

<del></del> 表示内容被正式删除,<s></s> 表示内容过时或不推荐——选错标签不会影响页面显示,但会破坏语义、损害可访问性和 SEO。
什么时候该用 <del></del> 而不是 <s></s>
核心判断依据是:有没有发生「编辑动作」。
-
<del></del>必须用于真实发生的删除行为,比如法律条文修订、API 字段下线、价格调整记录;它支持datetime和cite属性,能说明“谁在何时为何删” -
<s></s>仅表示状态变化,比如商品已停售、系统不再支持 IE8、旧版文档里的错误参数值;它不携带时间或来源信息,加了会被校验器警告 - 电商页面写
<del datetime="2024-03-15">¥299</del> ¥249是对的;写<s>IE8 兼容</s>是对的;但写<del cite="https://example.com/reason">XML 配置</del>却没真删,就是语义造假
datetime 属性必须严格按 ISO 8601 格式写
浏览器不校验时间格式,但读屏器和搜索引擎依赖它解析语义。错写等于白写。
- ✅ 正确:
datetime="2024-03-15"、datetime="2024-03-15T14:30:00Z"(UTC 时间优先) - ❌ 错误:
datetime="2024/03/15"、datetime="Mar 15, 2024"、datetime="2024.03.15" - 注意:
datetime值不参与渲染,改样式不影响语义;但若用 JS 动态插入,必须确保字符串合法,否则辅助技术可能跳过整段
别为了统一视觉效果强行禁用删除线
CSS 可以用 text-decoration: none 抹掉 <del></del> 或 <s></s> 的默认线,但那就废掉了全部语义价值。
- 读屏器仍会读“已删除:xxx”,但用户看不到视觉提示,易产生困惑
- 搜索引擎可能降权,尤其法律、电商类页面,缺失删除线会削弱“价格变更”“条款更新”的信号强度
- 纯视觉需求(如待办事项完成态)请直接用
text-decoration: line-through+ class,别硬套语义标签
嵌套使用风险高,尽量避免
规范没禁止 <del><s>xxx</s></del>,但实际中机器无法判断主次。
- NVDA、VoiceOver 等读屏器可能重复播报“已删除”“已废弃”,或直接跳过内层
- WAVE 等无障碍验证工具会报 warning,部分 CMS 自动清理非常规嵌套
- 真实场景中应拆解:比如“旧方案中的过时配置”,写成
<p>旧方案:<code><s>XML 配置</s>,再在外层用<del></del>包整个段落
真正难的不是写对标签,而是每次加删除线前,得先问一句:这段文字是“被删了”,还是“不对了”——这个判断一旦模糊,后续所有语义、SEO、无障碍努力都会打折扣。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











