因为html5不基于sgml,无需引用dtd,仅用于触发浏览器标准模式,现代浏览器对其识别完全一致;加public或system声明反而可能触发怪异模式,且必须顶格、无空格、无bom。

为什么直接写 就够了
现代浏览器对 HTML5 的 识别完全一致,不需要加任何注释、版本号或命名空间。加 <code>html PUBLIC 或 SYSTEM 声明反而可能触发怪异模式(Quirks Mode),尤其在旧版 IE 兼容测试中容易翻车。
常见错误现象:document.compatMode 返回 "BackCompat",导致盒模型、getBoundingClientRect() 行为异常。
- 永远只用
,一行,顶格,无空格 - 不要写
这类过时声明 - 不加
lang属性也能运行,但建议补上:(影响屏幕阅读器和 SEO)
里哪些标签真不能少
空白页看似什么也不需要,但漏掉关键元信息会导致调试困难、字体渲染异常、甚至移动端缩放失效。
必须保留的三项:<meta charset="UTF-8">、<meta name="viewport" content="width=device-width, initial-scale=1">、<title></title>。缺任意一个都可能让开发体验打折。
-
<meta charset="UTF-8">必须放在最前面(否则可能被浏览器误判编码,出现乱码) -
viewport不写会导致手机端页面默认按 980px 渲染,文字小到看不清 -
<title></title>虽不影响渲染,但 DevTools 标签页显示为空白,多开几个 tab 后根本分不清哪个是你的页面
为什么 里可以真的什么也不放
HTML 规范允许空 ,浏览器会正常解析并触发 DOMContentLoaded 和 load 事件。很多构建工具生成的 index.html 就是这样——纯骨架,靠 JS 动态挂载内容。
但要注意:空 下 document.body.innerHTML 是空字符串,document.body.children.length 为 0,这些判断逻辑在初始化脚本中要提前兜底。
- 不需要硬塞
<div id="app"></div>—— 除非你明确要用它作为 React/Vue 的挂载点 - 如果后续要注入 CSS,建议预留
<style></style>或<link rel="stylesheet">,而不是靠 JS 插入<style></style>标签(避免 FOUC) - 想快速验证页面是否加载成功?加一行
<script>console.log("page loaded")</script>到底部就行
复制粘贴就能跑的最终极简骨架
以下代码已剔除所有非必要字符,兼容 Chrome/Firefox/Safari/Edge,经 W3C Validator 验证通过:
<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Blank Page</title>
注意:文件保存时必须用 UTF-8 编码(无 BOM),编辑器选错编码会导致 charset 声明失效;<title></title> 文本可按需修改,但标签不能省略。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











