html文档结构是浏览器解析、seo、可访问性和js/css介入的基础;doctype必须首行无前置字符;需含lang属性且仅含和;须有charset、title、viewport三要素;文本须包裹在语义标签内。

HTML文档结构不是“写完就能跑”的样板,而是浏览器解析、搜索引擎索引、可访问性支持和后续JS/CSS介入的前提。错一层嵌套、漏一个、把<title></title>丢到里,轻则页面乱码,重则SEO失效、屏幕阅读器无法识别标题。
DOCTYPE声明必须是第一行且不能带任何前置内容
很多新手复制代码时会在前加空格、注释甚至BOM字符(比如UTF-8 with BOM),这会导致IE进入怪异模式,现代浏览器虽多数容忍,但<code>document.compatMode可能返回"BackCompat",影响盒模型计算和JS获取尺寸的准确性。
必须独占一行,前面不能有任何字符(包括不可见的U+FEFF)- 不要写
或<code>——大小写不敏感但习惯用小写更稳妥 - 别混用XHTML写法如
,它会触发严格解析,而现代项目几乎不需要
标签必须包裹全部内容,且lang属性不能省
不是可选容器,它是整个文档的根元素。缺失它,document.documentElement为null,CSS中的:root伪类失效,部分JS库(如某些i18n方案)会报错。
-
中的lang值要匹配实际语言,否则屏幕阅读器发音错误、翻译插件误判 - 不要在
上写class或id——虽然合法,但易与全局样式冲突;需要顶层控制请用:root -
里只能直接放和,不能塞<div>或文本节点 <h3> <code>里哪些标签必须有、哪些可以没有不是装饰区,它是浏览器加载逻辑的指挥中心。缺<meta charset="UTF-8">会导致中文乱码;没<title></title>会让标签页显示空白或文件名;漏<meta name="viewport">会让响应式布局在移动端彻底失效。- 强制存在的三项:
<meta charset="UTF-8">、<title></title>、<meta name="viewport" content="width=device-width, initial-scale=1.0"> -
<link rel="icon">不是必需,但没它,标签页默认显示浏览器图标,用户难以快速识别你的站点 - 避免在
里写<script></script>(尤其是同步脚本)——它会阻塞DOM构建;如需早期执行,加defer或移到底部
内容必须是有效HTML元素,不能裸写文本直接在
里写Hello world没闭合标签,浏览器会自动补全成<p>Hello world</p>,但这种容错行为不可靠:不同浏览器补全策略不同,且会污染DOM结构(比如让document.body.children.length变成1而非0)。- 所有文本内容必须包裹在语义化容器中:
<p></p>、<h1></h1>、<div>等,不能悬浮在<code>层级 -
<script></script>和<style></style>可以放在里,但<script></script>建议加type="module"或defer避免阻塞渲染 - 不要用
<center></center>、<font></font>这类废弃标签——它们已被移出HTML标准,部分浏览器已不支持渲染
最常被忽略的其实是
里<meta charset>的编码声明位置:它必须是内前1024个字节里的第一个<meta>,否则浏览器可能跳过解析,导致乱码。这不是理论风险,而是真实发生过的部署事故。 - 强制存在的三项:











