必须写以触发标准模式,避免怪异模式;需加lang属性(如zh-cn);中必需和;所有声明须位于首行无前置字符。

HTML 文档开头必须用 声明,这是现代 HTML5 的唯一合法文档类型声明;没有它,<a style="color:#f60; text-decoration:underline;" title="浏览器" href="https://www.php.cn/zt/16180.html" target="_blank">浏览器</a>会进入怪异模式(Quirks Mode),导致 CSS 布局、JS 行为不可预测。
为什么必须写 ?
这个声明不是 HTML 标签,而是向浏览器发出的“按标准模式渲染”的指令。省略或写错(比如 小写虽可接受,但大小写混用如 <code> 在部分旧<a style="color:#f60; text-decoration:underline;" title="工具" href="https://www.php.cn/zt/16887.html" target="_blank">工具</a>链中可能触发校验警告)都会让 IE8 及更早版本直接退化到怪异模式。现代浏览器虽容错强,但团队协作、CI 构建、W3C 验证仍会报错。
标签要不要加 lang 属性?
要加,且必须加。不加 lang 会导致屏幕阅读器无法正确发音、SEO 语义缺失、部分翻译插件失效。常见错误是只写 —— 这不够精确,应明确为简体中文 或繁体中文 。
头部 里哪些 meta 是硬性必需?
真正必需的只有两个:<meta charset="UTF-8"> 和 <meta name="viewport" content="width=device-width, initial-scale=1.0">。前者防止中文乱码(漏写会导致 ¥、 emoji、中文标点显示为 );后者确保响应式在移动端生效(漏写会让手机浏览器以桌面宽度缩放页面,文字小得看不清)。其他如 <title></title> 虽非技术强制,但无 <title></title> 会被 Lighthouse 扣分,且标签页显示为空白。
立即学习“前端免费学习笔记(深入)”;
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>页面标题</title> </head> <body> <h1>Hello World</h1> </body> </html>
最容易被忽略的是:所有这些声明都必须出现在第一行开始位置,前面不能有任何空格、BOM 字符或注释——哪怕一个看不见的 UTF-8 BOM(EF BB BF)都会让某些服务器或构建工具静默失败。











