html格式化标签是语义标记而非样式工具,用错会损害可访问性、seo及浏览器兼容性;表强重要性,仅视觉加粗;支持datetime属性且语义明确,仅为视觉删除;用于插入内容,专用于非标准文本;嵌套与空格需谨慎处理。

HTML格式化标签不是样式工具,而是语义标记——用错标签会导致可访问性下降、SEO弱化,甚至被现代浏览器降级处理。
为什么 <strong></strong> 和 <b></b> 渲染一样却不能混用
两者默认都加粗,但语义完全不同:<strong></strong> 表示内容有强重要性(屏幕阅读器会加重语气),<b></b> 仅表示“视觉上突出”,无语义权重。
- 搜索引擎和辅助技术依赖
<strong></strong>判断关键信息,用<b></b>就等于放弃这部分信号 - 某些严格模式的 HTML 验证器(如 W3C validator)会对
<b></b>在无上下文场景中发出警告 - 当 CSS 禁用时,
<strong></strong>仍保有语义价值;<b></b>则彻底退化为无意义包裹
<del></del> 与 <s></s> 的实际兼容性差异
<del></del> 是语义化删除(比如价格变更、内容撤回),<s></s> 是纯视觉删除(比如过时但未正式废止的信息)。关键区别在行为层面:
-
<del></del>支持datetime属性(如<del datetime="2026-09-28"></del>),可用于生成修订日志;<s></s>不支持该属性 - 部分旧版 IE 对
<del></del>的默认样式支持不稳定,若需兼容 IE10 及更早版本,建议用 CSS 显式声明text-decoration: line-through - WCAG 2.1 要求对已删除内容提供替代说明,
<del></del>更容易配合aria-label实现(如<del aria-label="原价:¥299,已下架">¥299</del>)
<ins></ins> 和 <u></u> 在现代项目中怎么选
<ins></ins> 表示“插入内容”,有明确的语义和时间上下文;<u></u> 原本是下划线,但 HTML5 中已重新定义为“非标准文本”(如专有名词、拼写错误、中文专名号等),不再是通用下划线开关。
- 想标注新增段落或修订内容?必须用
<ins></ins>,它支持datetime和cite属性 - 需要给“鲁迅”加专名号、“GitHub”加品牌标识、或模拟手写误写效果?才考虑
<u></u>,且务必搭配class或style控制颜色/厚度,避免与超链接混淆 - 所有主流浏览器对
<u></u>的默认下划线位置偏低(贴近基线),若用于强调,不如直接用text-decoration: underline wavy red更可控
容易被忽略的语义断层点:嵌套与空格处理
格式化标签嵌套不当会破坏解析逻辑,尤其在提取纯文本或 SSR 渲染时:
-
<strong><em>重点强调</em></strong>是合法且推荐的(语义叠加),但<strong>价格<del>¥199</del></strong>会让 AT(辅助技术)误读为“价格已删除”,应改为<strong>价格</strong><del>¥199</del> -
<pre class="brush:php;toolbar:false;"></pre>内部保留空格换行,但<strong></strong>等内联标签不会——连续空格会被压缩,换行被忽略,如需保留,必须用或<br> - 服务端渲染(如 Next.js / Nuxt)若未正确转义
<del></del>中的特殊字符(如&、),可能触发 XSS 或解析中断,务必确保内容经过 HTML 实体编码
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











