html5 中彻底失效的标签包括、、、、,现代浏览器解析时直接跳过、不建 dom 节点;等表现型标签虽可渲染但属 obsolete,须按语义用 css 或语义化标签替代。

哪些标签在 HTML5 中已彻底失效,连渲染都不保证
不是所有废弃标签都还能“凑合用”。<frameset></frameset>、<frame>、<bgsound></bgsound>、<marquee></marquee>、<blink></blink> 这类标签,现代浏览器(包括 Chrome 128+、Firefox 126+、Safari 19)解析时直接跳过,不建 DOM 节点,也不触发任何样式或行为。你写 <marquee>Hello</marquee>,页面上就是空白——不是“没动效”,是根本没这个元素。
容易踩的坑:
-
<frameset></frameset>一旦出现,整个文档会强制进入怪异模式(Quirks Mode),CSS Flex/Grid 失效,document.querySelector('main')可能返回 null -
<frame>和<noframes></noframes>在 strict DOCTYPE 下被完全忽略,且无法通过 JS 检测是否存在(document.getElementsByTagName('frame').length永远为 0) -
<bgsound></bgsound>不仅无效,还会干扰<audio></audio>的 autoplay 策略,部分 Android WebView 会报DOMException: The element has no supported sources
纯表现型标签必须用 CSS 替代,不能只换壳
<font></font>、<center></center>、<basefont>、<u></u>、<strike></strike> 这些标签虽仍被多数浏览器渲染,但 W3C 明确标记为 obsolete,VS Code + ESLint-HTML 或 HTMLHint 会标红并阻断构建(默认规则 W027、W028)。
关键不是“能不能显示”,而是替换逻辑是否合理:
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
-
<center></center>不等于text-align: center:前者对<div> 默认无效,后者只作用于行内内容;块级居中必须配合 <code>margin: 0 auto或display: flex -
<font size="4"></font>没有标准像素映射,Chrome 渲染为 14px,Safari 可能是 16px;CSS 应用font-size: 1.25rem或clamp(1rem, 2.5vw, 1.5rem) -
<u></u>和<strike></strike>语义缺失,应按意图选:<ins></ins>(插入)、<del></del>(删除)、<mark></mark>(高亮) - 背景图:
body { background-image: url(bg.jpg); background-size: cover; background-repeat: no-repeat; }(别用background简写,JS 修改backgroundColor会覆盖整个简写值) - 文字颜色:
body { color: #333; },不是 - 链接状态:
a:link { color: #0066cc; } a:visited { color: #663399; } a:active { color: #ff3300; }(伪类不能写在内联 style 中) - 动态切换背景:
document.body.classList.toggle('dark')比document.body.style.background = '...'更健壮,避免样式污染 -
<dir></dir>→ 本质是无序列表,一律改用<ul></ul>,别硬套<nav></nav> -
<listing></listing>/<xmp></xmp>→ 预格式化文本,优先用<pre class="brush:php;toolbar:false;"><code></code>,保留缩进与换行</pre> -
<acronym></acronym>→ 已被<abbr></abbr>统一替代,且必须带title属性(<abbr title="HyperText Markup Language">HTML</abbr>) -
<applet></applet>→ 不是简单换成<object></object>,而应根据功能迁移:Java 小程序早已淘汰,交互逻辑需重构成 Web Components 或轻量 JS 库 -
<isindex>→ 必须重构为完整<form></form>,含<input type="search">和提交逻辑
body 上的废弃属性,JS 读写全失效
background、text、link、vlink、alink、bgcolor 这些 属性,在 HTML5 中已被移除 DOM 接口。执行 document.body.text 返回 undefined,赋值 document.body.bgcolor = '#fff' 后再读仍是空字符串。
真正有效的路径只有 CSS:
结构类废弃标签,替换前先理清语义
<dir></dir>、<listing></listing>、<xmp></xmp>、<acronym></acronym>、<applet></applet> 这些标签不是“换个名字就行”,得看它原本承载什么信息:
最麻烦的不是语法替换,是老项目里 <center></center> 常和 <table align="center">、<code><div style="text-align:center"> 混用,批量替换前得先 grep 出所有组合模式,否则改完反而错位。</div>










