HTML是标记语言而非编程语言,定义内容结构与语义;须首行、保障无障碍与SEO、须在head前1024字节内,结构合法不等于功能正确。

HTML 是网页的骨架,不是“一种编程语言”,而是定义内容结构和语义的标记语言。没有它,CSS 无法知道该给谁加样式,JavaScript 也找不到操作对象——所有前端行为都依赖 HTML 提供的节点树。
为什么 必须放在第一行
它不参与渲染,但决定浏览器用什么模式解析后续代码。漏掉、写错位置或拼错,会导致 document.compatMode 返回 "BackCompat",触发怪异模式:盒模型计算异常、width 表现不一致、某些 CSS 属性失效。
- 必须是文件最开头,前面不能有任何字符(包括空格、BOM、注释)
-
html全小写,不区分大小写但惯例统一小写 - HTML5 中只接受这一种写法,
等旧式声明已淘汰
的 lang 属性不是可有可无
它影响屏幕阅读器发音、搜索引擎语言识别、浏览器自动翻译触发逻辑。设成 lang="en" 却写中文,翻译工具可能跳过整页;设为空或错误值(如 lang="cn"),部分语音辅助工具会报错或静音。
- 推荐使用 ISO 639-1 + ISO 3166-1 组合,如
zh-CN、en-US、ja-JP - 可在子元素中覆盖,比如
包裹英文引文 - 不要写成
language="zh-CN"—— 这个属性不存在,浏览器直接忽略
放错位置会直接乱码
它必须出现在 内前 1024 字节中,且越靠前越好。如果它后面还有其他 或 ,而前面没声明编码,浏览器可能按系统默认编码(如 GBK)解码,导致中文变成
- 必须在
最顶部,紧接在开始标签后 - 不要用
—— 已废弃,且兼容性差 - VS Code 保存文件时务必选 UTF-8 无 BOM,否则即使写了
charset仍可能乱码
以外的内容不能“看起来正常”就认为没问题
像 <script></script>、、 这些标签,如果误写在 外但仍在 内,浏览器会自动纠错并移动到 末尾——这看似“能跑”,实则破坏预期执行顺序,尤其影响 DOM 就绪判断和资源加载优先级。
-
<script></script>在中需加defer或async,否则阻塞解析 -
必须在,放里不会报错但可能闪屏 - 自定义元素或 Web Component 初始化脚本,若依赖
document.body,放在外会导致body === null
真正容易被忽略的是:HTML 结构的合法性不等于功能正确性。一个能渲染的页面,可能因一处 lang 错写、一个错位的 meta、或 doctype 前多了一个空格,就在无障碍、SEO、国际化或老版本浏览器中悄然失效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











