HTML5中、、、、(无语义时)、、均已obsolete,W3C明确定义为废弃标签,新项目严禁使用,必须用CSS或语义化标签替代。

直接说结论:现在写 HTML,<font></font>、<center></center>、<big></big>、<strike></strike>、<u></u>(无语义时)、<basefont>、<s></s> 这些标签一律不要用——不是“还能凑合”,而是 W3C 已明确定义为 obsolete,浏览器保留它们纯属向后兼容,新项目中出现就是技术债。
哪些标签在 HTML5 中已 obsolete,且没有合理替代场景
这些标签既无语义,也不再承担任何现代工程职责,删掉比留着更安全:
-
<basefont>:只在 IE 里部分支持,连主流 CSS 属性font-family/font-size都不认它,彻底无存在必要 -
<strike></strike>和<s></s>:虽然渲染效果类似删除线,但<s></s>在 HTML5 中语义已变为“不再准确/不推荐的内容”,和<del></del>(表示已删除的文本)有本质区别;若只是视觉划掉,用text-decoration: line-through更可控 -
<u></u>:仅当用于标注拼写错误、专有名词或中文注音(如<ruby><rb>漢</rb><rt>han</rt></ruby>)等有明确语义时才可考虑;日常下划线必须走 CSS:text-decoration: underline
为什么 <center></center> 和 <font></font> 看似简单,却最该优先清理
这两个标签在旧项目里高频出现,但它们破坏的是结构与样式的根本契约:
-
<center></center>不是“居中容器”,它强制所有子元素水平居中,无法单独控制某一块、也无法响应式微调;CSS 的text-align: center(内联内容)或margin: 0 auto(块级定宽)才是可预测、可组合的方案 -
<font color="red" size="4"></font>把样式逻辑硬编码进结构层,导致改颜色要扫全站 HTML;而统一用类名(如class="error-text")配 CSS 规则,一次修改全局生效 - 二者都不可继承、不可 media query 响应、不支持 CSS 变量,遇到暗色模式或动态字号切换时直接失效
容易被忽略的“伪安全”陷阱:HTML 属性层面的废弃
有些属性看起来还在生效,但其实已被标准弃用,且行为不稳定:
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
立即学习“前端免费学习笔记(深入)”;
-
align(用在<div>、<code><p></p>、<img alt="HTML开发中应避免的过时标签与废弃语法汇总" >上):比如<img align="right" alt="HTML开发中应避免的过时标签与废弃语法汇总" >,现代浏览器已不保证其排版行为一致,应改用float(慎用)或 Flex/Grid -
bgcolor、border(表格/图片等):这些属性绕过 CSS cascade,无法被!important覆盖,调试时经常“改了 CSS 却没变” -
valign:表格单元格垂直对齐,已被vertical-alignCSS 属性完全取代;混用会触发浏览器怪异模式(quirks mode)风险 - 给
<div class="centered"> 加 <code>role="presentation"并不能让它变成语义正确的居中容器——屏幕阅读器仍会忽略它,而视觉用户看到的只是“一个没意义的 div” - 用
<span style="font-size: 1.2em; color: #666;"></span>替代<font></font>,看似能跑通,但丢失了层级关系(比如无法通过body[data-theme="dark"] .caption统一接管) - 真正要做的不是“找一个能用的替代写法”,而是重构语义结构:把“需要强调的文字”改成
<strong></strong>或<mark></mark>,把“需要居中的标题”放进<header></header>并用 CSS 控制对齐
迁移时最常卡住的点:语义补丁不能掩盖结构缺陷
有人试图用 ARIA 或 class 名“模拟”旧标签功能,这反而让问题更隐蔽:
最麻烦的不是改代码,而是改习惯——当你下意识想敲 <center></center> 时,得停一下,问自己:这个居中是内容逻辑所需,还是纯视觉需求?前者该用语义容器 + CSS,后者直接上 display: flex。一旦形成条件反射,废弃标签就真的不会再出现了。


















