必须置于内最前位置,否则浏览器按默认编码(如ISO-8859-1或GBK)解码,导致中文显示为“æ–‡”等乱码;同时要求HTML文件实际保存为UTF-8无BOM格式,且服务器响应头Content-Type需含charset=utf-8。

HTML 骨架不是可选模板,而是浏览器解析页面的强制契约——缺任何一块,都可能造成中文乱码、SEO 失效、移动端错位,甚至整个页面不渲染。
为什么 必须放在第一行?
它不是注释,也不是可有可无的声明。浏览器一旦在第一行没看到 ,就会自动进入“怪异模式(Quirks Mode)”,此时 CSS 盒模型、<code>height 计算、表单默认样式等全部回归 IE5.5 行为,现代布局直接崩盘。
- 必须顶格写,前面不能有任何空格、BOM 字符或注释
- 大小写不敏感,但写成
或 <code> 也合法;行业惯例全大写 + 小写 <code>html - 不要写成
——那是过时的 DTD,会触发怪异模式
的 lang 属性到底影响什么?
它不只关乎屏幕阅读器读音,更直接影响浏览器的字体回退策略、断字(hyphenation)、拼写检查、搜索引擎语义识别。中文页面若漏掉或写错,Chrome 可能用日文字体渲染简体中文,Safari 在 iOS 上禁用自动断行,百度收录时降权“语言不明确”。
- 简体中文固定用
lang="zh-CN",不是zh、zh-cn(小写连字符不被所有 UA 识别)或zh-Hans(虽标准但兼容性弱) - 如果页面含少量英文段落,可用
<span lang="en">API</span>局部覆盖,无需改根标签 - 服务端渲染时,务必从用户请求头
Accept-Language动态注入,硬编码成zh-CN会伤害多语言用户
<meta charset="UTF-8"> 放错位置会导致中文全变成方块
这个标签必须出现在 内、且在所有其他依赖字符编码的标签之前(比如 <title></title>、<meta name="description">)。浏览器解析到 <title></title> 时若还没确认编码,就会按系统默认(如 Windows-1252)解码,中文立刻变 æä»¬。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
立即学习“前端免费学习笔记(深入)”;
- 它必须是
中第一个<meta>,推荐紧贴开始标签下一行 - 不要写成
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">—— 这是 HTML4 写法,已废弃,且部分旧 UA 解析不稳定 - 编辑器保存文件时也必须选 UTF-8 无 BOM 格式;VS Code 默认是,但记事本默认带 BOM,会干扰该 meta 生效
里直接写内容,真的一点风险都没有?
表面上可以,但实际埋了三个隐形雷:<script></script> 同步加载阻塞渲染、未包裹的文本节点触发意外换行、空格/换行被当作文本节点污染 DOM 结构。新手常以为“能显示就行”,结果调试时发现 document.body.childNodes 多出 7 个 Text 节点。
- 所有可见内容必须包裹在语义化标签内,如
<p></p>、<div>、<code><header></header>;纯文本直写是无效 HTML5 - 脚本尽量用
defer或async,避免放在底部还阻塞首屏 - 如果只是临时测试,至少用
<div> 包一层,别裸写 <code>hello world骨架的每个字符都有语义和执行顺序,不是“看着差不多就能跑”。最易被忽略的是:文档编码声明与文件实际编码不一致、
lang值和真实内容语言不匹配、内无容器标签——这三处出错,调试成本远高于写错一个<h2></h2>。


















