不推荐用标原价,因其语义表示“不再准确或相关”,而非价格变更;应使用并配合title、aria-label等语义补充,确保无障碍与seo友好。

HTML里用<s></s>标原价是否合理
不推荐。虽然<s></s>能视觉上划掉文字,但它语义是“不再准确或不再相关”的内容,比如过时的规格、失效的条款——不是“已下架商品的原价”。搜索引擎和读屏软件会按这个语义理解,可能影响SEO和无障碍体验。
更合适的替代方案:用<del></del> + 语义补充
<del></del>明确表示“被删除的内容”,语义上更贴近“原价已被取消/替换”,是W3C推荐用于价格变更的标签。实际使用时建议配合<span></span>说明原因:
<del>¥299</del> <span title="已下架,原价">(下架前售价)</span> <strong>¥199</strong>
这样既保持可访问性(title会被读屏朗读),又避免歧义。
注意CSS重置和屏幕阅读器行为
浏览器默认给<del></del>加删除线,但部分旧版iOS Safari或微信内置浏览器会忽略<del></del>样式;而<s></s>在某些Android WebView里可能被渲染为斜体而非删除线。务必测试目标环境:
- 用
del { text-decoration: line-through; }显式声明样式 - 避免仅靠视觉区分,必须保留文字说明(如“原价”“下架前”)
- 不要把
<del></del>套在<a></a>里——链接仍可点击,但语义冲突
动态渲染场景下容易漏掉的细节
如果原价是JS动态插入的,别只写element.innerHTML = '<del>'+price+'</del>'。这样缺失语义上下文,且无法被AT(辅助技术)识别为价格变更:
- 优先用
document.createElement('del')并设置aria-label="原价 ¥299,已下架" - 若用React/Vue,确保
<del></del>不在v-if或display: none容器内——否则会被AT跳过 - 下架状态变化时,应同步更新
<del></del>的datetime属性,例如<del datetime="2024-05-20"></del>
下架价的语义比样式更重要,删掉的不只是数字,还有用户对价格有效性的信任依据。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











