不符合。 表示“不再准确或不再相关”的内容,如过时价格、失效条款,不表示“原价”这种商业对比语义;应使用标注原价并配datetime属性,或用+css/aria实现纯视觉效果。

用 <s></s> 标签标注原价是否符合语义?
不符合。<s></s> 表示“不再准确或不再相关”的内容,比如过时的价格、已失效的条款,但**不表示“原价”或“划掉的折扣价”这种商业语义**。搜索引擎和读屏软件会把它理解为“废弃信息”,而非“对比价”。
更合适的 HTML 标签是 <del></del>
<del></del> 明确表示“被删除的内容”,在电商场景中语义更贴切:原价被删减,现价是新有效值。它支持 datetime 属性(可标注降价时间),且与 <ins></ins> 天然配对,便于构建可访问的比价结构。
常见写法示例:
<p>现价:<strong>¥199</strong>>;原价:<del datetime="2024-05-01">¥299</del></p>
- 不要用
<s></s>替代<del></del>,即使视觉效果一样 - 如果原价本身没有“被删除”的含义(比如只是静态标注“原价 ¥299”而非“从 ¥299 降为 ¥199”),则应改用
<span></span>+ ARIA 或 CSS 类,避免误传语义 -
<del></del>不影响 SEO 权重分配,但能提升屏幕阅读器用户的理解准确率
为什么很多人误用 <s></s>?
因为浏览器默认样式和 <del></del> 一样(都是加删除线),开发者只看视觉结果,忽略语义差异。但以下情况会暴露问题:
- 读屏软件朗读
<s></s>时可能说“过时内容:¥299”,而<del></del>更可能读作“已删除:¥299” - 某些无障碍检测工具(如 axe)会把滥用
<s></s>标注价格列为“语义错误” - 未来浏览器若增强对
<s></s>的语义处理(如自动折叠过时内容),错误使用会导致原价意外消失
需要兼容旧版 IE 或极简环境时怎么办?
IE9+ 已完全支持 <del></del>,无需降级。唯一需注意的是:部分老旧 CMS 或富文本编辑器会把删除线按钮硬编码为 <s></s>。此时应在输出前用脚本或模板逻辑替换:
html = html.replace(/<s>([^/g, '<del>$1</del>');</s>
- 不要依赖 CSS 强制改
<s></s>的语义(比如加aria-label),这属于掩耳盗铃 - 如果后端无法修改标签,至少在外层包裹
<span role="deletion"></span>并声明aria-label="原价 ¥299",比裸用<s></s>略好
<del></del> 和 <ins></ins> 配合使用才是表达价格变动的干净解法,而 <s></s> 应留给真正“作废”的内容——比如下架商品页里还残留的旧规格参数。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











