HTML转HTML5需系统性调整语义结构、废弃标签、属性写法及文档模型:替换<font>等过时标签为CSS,改<div id="header">为<header>,布尔属性仅存在即生效,空元素不加斜杠,属性值必加引号,script/link的type省略有前提,嵌套语义须合规。

HTML 转 HTML5 不是简单地把 <!DOCTYPE html> 往顶上一加就完事。真正影响可维护性、浏览器兼容性和未来扩展性的,是语义化结构、废弃标签处理、属性写法和文档模型的系统性调整。
必须替换的过时元素与对应语义化标签
HTML5 废弃了大量纯表现型标签,强行保留会导致语义丢失、无障碍支持失效、SEO 权重下降。
-
<font>、<center>、<u>、<strike>等已无合法地位,一律用 CSS 替代(如text-decoration: underline) -
<b>和<i>未被废弃,但语义已变更:不再表示“加粗/斜体”,而是分别代表“不带额外重要性的突出”和“替代性语气”,日常强调请优先用<strong>和<em> -
<div id="header">必须改为<header>,同理nav、main、aside、footer等需按内容角色使用,而非仅靠 class 模拟
属性写法必须符合 HTML5 语法约束
HTML5 对布尔属性、自闭合标签、引号使用有明确要求,松散写法可能在某些解析器中出错或触发怪异模式。
- 布尔属性(如
disabled、required、checked)不能写成disabled="false"或disabled="disabled";正确写法只有disabled(存在即为 true)或直接省略 -
<img>、<input>、<br>等空元素禁止写成<img />(XHTML 风格),HTML5 中应为<img src="..." alt="...">(无尾斜杠) - 所有属性值必须加引号:
class=header是非法的,必须写成class="header",即使值不含空格
script 和 link 标签的 type 属性可省略但有前提
HTML5 允许省略部分 type,但并非所有场景都安全,尤其涉及模块化或非标准 MIME 类型时。
立即学习“前端免费学习笔记(深入)”;
-
<script>默认类型为text/javascript,所以<script src="app.js"></script>合法;但若使用 ES modules,必须显式声明type="module" -
<link rel="stylesheet">可省略type="text/css",但<link rel="icon">若未指定type,部分旧版 Safari 会忽略.svg图标 - 自定义
rel值(如rel="preload")必须配as属性,否则会被忽略 —— 这不是规范退让,而是强制语义对齐
<!-- 正确:模块脚本必须声明 type --> <script type="module" src="main.mjs"></script> <p><!-- 正确:预加载图片需明确 as --> <link rel="preload" href="hero.jpg" as="image"></p><p><!-- 错误:缺少 as,preload 失效 --> <link rel="preload" href="hero.jpg">
最容易被忽略的是嵌套语义层级:比如 <article> 内必须有 <header> 或 <h1> 作为标题锚点,否则结构意义断裂;<time> 必须带 datetime 属性才具机器可读性。这些不是“能跑就行”的细节,而是 HTML5 作为数据载体的基础契约。











