规范html页面骨架必须严格遵循四组核心标签:顶格首行、带正确语言属性、置于head最前、唯一且为body直系子元素,缺一不可。

规范的 HTML 页面骨架不是堆砌标签,而是用最少、最准确的结构支撑语义、渲染和交互。核心就四组标签,缺一不可,顺序和写法都有硬性要求。
必须顶格写的 DOCTYPE 声明
第一行第一列只能是 ,不能有空格、注释、BOM 字节(EF BB BF)。大小写敏感,<code> 或 <code> 都会触发怪异模式,导致盒模型错乱、JS 方法行为异常。
- VS Code 新建文件后输入
!再按 Tab,自动生成的骨架默认合规 - 用编辑器右下角确认文件编码为 “UTF-8”,不是 “UTF-8 with BOM”
- 复制粘贴时务必检查开头是否干净——哪怕多一个空行也会失效
html 标签要带 lang 属性
是标准写法。lang 不仅影响 SEO 和浏览器翻译,还决定屏幕阅读器发音规则、拼写检查词库,甚至 Chrome 的右键翻译按钮是否可用。
- 简体中文固定用
zh-CN,繁体用zh-TW,不要写成zh、cn或zh_cn - 局部英文内容可单独加
<p lang="en">API response</p> - SPA 场景中,服务端直出与客户端 hydration 的 lang 值必须完全一致,否则 React 会报 Text content does not match
head 里 charset 必须排最前
<meta charset="UTF-8"> 要放在 开始后的第一个位置,前面不能有任何字符(包括空格、注释、其他 meta)。它必须出现在前 1024 字节内,否则部分浏览器直接忽略。
- 紧随
后写,再写 viewport、title、link 等 - viewport 应该在 charset 之后、title 之前;title 缺失会导致页面标题为空、SEO 权重归零
- charset 错位会导致中文乱码,进而让 JS 字符串解析失败(如
document.title = '用户中心'变成'û¼')
body 中 main 标签必须唯一且直系
<main></main> 是页面主内容入口,每个页面只能有一个,且必须是 的直接子元素,不能嵌套在 <section></section>、<div id="app"> 或任何容器内。
<ul>
<li>重复或嵌套会破坏可访问性树,Tab 键跳过整个区域,focus() 失效</li>
<li>React/Vue hydration 时若结构不一致(比如服务端有 main,客户端没写,或多了一个 wrapper div),会触发 DOM mismatch 报错</li>
<li>骨架屏替换真实内容时,<code><main></main> 的 class、data-id、层级、同级元素数量都要严格一致,连注释位置都不能差











