HTML5已将<font>、<center>等标签定义为obsolete,因其语义缺失、CSS覆盖困难、响应式失效且破坏无障碍与SEO;应改用CSS布局和语义化标签如<del>、<ins>等。

<font>、<center>、<u>、<s>、<strike>、<big>、<basefont> 这些标签在现代项目里不该出现——不是“还能凑合”,而是语义缺失、CSS 覆盖困难、组件化下极易失控,HTML5 规范已明确定义为 obsolete。
为什么浏览器还渲染 <font> 和 <center>,但你不能用
所有主流浏览器保留对它们的解析,仅因向后兼容。但 HTML5 规范不定义其语义,也不承诺未来支持。<font> 把 color、size、face 写死在结构层,CSS 的 font-size 或 color 可能被继承链打断;<center> 依赖旧式块级居中逻辑,在 Flexbox/Grid 布局或响应式断点中会突然失效。
常见错误现象:
- 用
<center><div>内容</div></center>实现居中,结果在移动端错位 - 给
<font color="blue">文字</font>加了 CSS 类,颜色却没变——因为浏览器对<font>的样式有特殊优先级处理
<u> 和 <s> 不是“加下划线”和“加删除线”的快捷键
HTML5 收紧了这两个标签的语义:<u> 仅表示拼写错误、专有名词、技术术语等非文本标注(不是视觉装饰);<s> 表示不再准确或不推荐的内容,而非一般性删除效果。误用会导致无障碍阅读器误读、SEO 语义混乱。
立即学习“前端免费学习笔记(深入)”;
正确做法:
- 纯视觉下划线 → 用 CSS
text-decoration: underline - 插入内容 → 用
<ins> - 强调语气 → 用
<em>或<strong> - 删除内容 → 用
<del>
例如:<u>重要提示</u> 应改为 <span class="highlight">重要提示</span> + CSS 控制样式,而不是语义错配。
<frame> 和 <frameset> 已彻底退出工程实践
这两个标签在 HTML5 中被完全移除,不只是废弃。它们破坏文档流、阻断历史记录、无法适配移动端,且与现代 SPA 路由机制冲突。虽然 <iframe> 仍被保留,但它语义清晰(嵌入外部文档),可控制 sandbox、loading 等行为,与 <frame> 完全不同。
迁移要点:
- 不要试图用
<iframe>模拟旧<frameset>布局 - 多页导航场景 → 用前端路由(如 React Router、Vue Router)替代
- 需要嵌入第三方内容 → 明确设置
sandbox属性,禁用不必要的权限
真正容易被忽略的是:废弃标签常藏在第三方富文本编辑器输出、CMS 模板、或老系统导出的 HTML 片段里。它们不会报错,但会在组件复用、SSR 渲染、或无障碍检测时暴露问题。检查时别只盯住手写代码,要扫整个 HTML 流水线。



















