标签不是删除线的视觉实现方案,因为它定义的是“内容已失效”的语义而非样式,浏览器默认加删除线仅为呈现惯例,可通过CSS覆盖;其核心价值在于传达状态变化(如价格不适用),而非编辑动作(如字段被删除),且依赖严格ISO 8601格式的datetime属性支撑机器可读性与无障碍播报差异。
为什么
标签不是“删除线”的视觉实现方案
标签确实渲染为删除线,但它本身不定义“删除线”——它定义的是“内容已失效”。浏览器只是按规范默认给加了text-decoration: line-through
,这和
默认加粗、
默认倾斜一个道理。你完全可以用 CSS 覆盖掉这个样式:s { text-decoration: none; }
,此时语义还在(“过时”),但视觉上连横线都没了。
常见错误现象:
¥199
被当成“画条线就行”,结果在无障碍场景下读屏器报“已废弃:¥199”,而用户正盯着商品页想点购买——ta 并没意识到这是价格变更,只听到“废弃”,瞬间困惑。
视觉效果是副作用,不是目的;语义才是
存在的唯一理由
若只需划掉文字(比如待办事项完成态、设计稿标注),直接用
text-decoration: line-through
更干净
不支持cite
或datetime
,没法说明“为什么过时”“从什么时候开始过时”
和在“内容失效”场景下怎么选
两者都可用于呈现“旧信息”,但触发条件不同:
指向一次明确的编辑动作(删掉了),指向一次状态变化(不适用了)。例如商品价格变动,本质是“原价不再生效”,不是“原价被从数据库删了”——该用;但如果这是 API 响应字段变更日志,显示“旧字段user_name
已被移除,改用full_name
”,这时才对。
使用场景:
立即学习
“
前端免费学习笔记(深入)
”;
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
促销页写“原价:
¥299
现价:¥199” → ✅ 合理,“原价”未被删除,只是当前不适用
技术文档写“
get_user()
fetchUser()
” → ✅ 合理,记录函数被删除并替换
后台管理页显示“用户状态:
待审核
” → ❌ 错误,这不是过时,是当前真实状态,不该加删除线
datetime 属性写错会导致语义彻底丢失
的datetime
不是装饰字段,它是机器可读的关键元数据。搜索引擎、审计工具、协作平台靠它判断修改时效性。错写成datetime="2026/04/20"
或datetime="4月20日"
,浏览器照常渲染删除线,但所有依赖该属性的系统都会跳过解析——等于白写。
必须满足:
格式严格为 ISO 8601:
datetime="2026-04-20"
(仅日期)或
datetime="2026-04-20T15:30:00Z"
(含时区)
时间值不参与渲染,所以别指望它自动转成本地时间;后端生成时得确认时区是否一致
根本不支持datetime
,强行加会触发 HTML 校验警告,且无任何效果
读屏器对
和的播报差异很实在
NVDA、VoiceOver 等主流读屏器不会把
和当成同一件事处理:通常播报为“已删除:xxx”,则可能静默跳过修饰词,或读作“已废弃:xxx”。用户听到“已删除”,第一反应是“这内容还能点吗?是不是失效链接?”;听到“已废弃”,则更倾向理解为“历史参考,当前不推荐”。这种差异直接影响操作决策。
容易踩的坑:
用
包裹按钮文案(如立即下载
),读屏器说“已废弃:立即下载”,用户不敢点
用
标注临时缺货商品(实际库存为 0,但商品页仍存在),读屏器报“已删除:iPhone 15”,引发客诉
纯 CSS 删除线(
text-decoration: line-through
)全程静默,什么也不说——适合真·视觉装饰,不适合传达状态
语义不是可选项,是交付物的一部分。写
或之前,先问自己:这段文字是“被删了”,还是“不适用了”?答案错了,后续所有无障碍、SEO、协作价值就全偏了。