必须写,它是强制前提而非建议,用于触发标准模式渲染,避免怪异模式导致布局和js异常;lang属性必须准确设置以保障可访问性和seo;meta charset需为utf-8(无bom),viewport须在head内且不晚于前1kb。

HTML 文档必须以 开头,否则<a style="color:#f60; text-decoration:underline;" title="浏览器" href="https://www.php.cn/zt/16180.html" target="_blank">浏览器</a>会进入怪异模式(Quirks Mode),导致 CSS 布局、JS 行为不可预测——这不是可选“建议”,而是强制前提。
为什么必须写 ?
这个声明不是 HTML 标签,而是告诉浏览器:“请用标准模式渲染”。没有它,IE 会退化到 IE5.5 渲染逻辑,Chrome/Firefox 也会启用兼容性兜底规则。常见症状包括:box-sizing 失效、flex 布局错乱、getBoundingClientRect() 返回值异常。
注意: 必须是文档第一行,前面不能有任何字符(包括空格、BOM、注释)。
标签的 lang 属性要不要加?
要加,且必须准确。屏幕阅读器、搜索引擎、翻译工具都依赖它判断语言。错误或缺失会导致语义识别失败、SEO 权重下降、自动翻译出错。
立即学习“前端免费学习笔记(深入)”;
-
lang="zh-CN":简体中文(中国大陆) -
lang="zh-TW":繁体中文(台湾) -
lang="en":通用英语(不推荐,应细化为en-US或en-GB)
不写 lang 不报错,但 WCAG 可访问性检测会直接标为「严重缺陷」。
meta charset 和 viewport 的顺序与写法
<meta charset="UTF-8"> 应紧随 <title></title> 之后(或至少在第一个 <meta> 之前),确保浏览器尽早解码;<meta name="viewport" content="width=device-width, initial-scale=1"> 必须放在 内,且不能晚于前 1KB 内容——否则 iOS Safari 可能忽略它。
常见错误:
- 写成
<meta charset="utf8">(缺横线,无效) - 把
viewport放在里(完全无效) - 用
user-scalable=no(违反 WCAG,部分浏览器已禁用)
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>页面标题</title> </head> <body> <h1>内容开始</h1> </body> </html>
最容易被忽略的是 BOM:用 VS Code 保存时若选了「UTF-8 with BOM」,开头会多出不可见字节,让 失效。务必设为「UTF-8」(无 BOM)。











