HTML5不存在“格式选择”问题,功能异常主因是DOCTYPE声明错误、文件后缀不兼容或误用XML/XHTML解析规则。

HTML5 本身不是一种“格式”,不存在“选错 HTML5 格式”导致功能丢失的问题——你遇到的,大概率是文档类型声明(<!DOCTYPE html>)写错、文件后缀用错、或误把 HTML 当成其他格式(比如 XML 或 XHTML)来解析和使用。
为什么 <!DOCTYPE html> 写错会导致功能异常
浏览器靠 <!DOCTYPE html> 进入“标准模式”。如果漏写、拼错(如 <!doctype html> 小写没问题,但 <!DOCTYPE HTML PUBLIC ...> 过时写法)、或混进 BOM/注释前,可能触发怪异模式(Quirks Mode),结果:flex 不生效、position: sticky 失效、getBoundingClientRect() 返回错误值。
- 必须放在第一行,且前面不能有任何字符(包括空格、BOM、
<!-- comment -->) - 大小写不敏感,但推荐全大写 + 小写
html:即<!DOCTYPE html> - 不要用 XHTML 声明(如
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ...>),它会强制 XML 解析规则,<img>不自闭合就报错
.html 和 .htm 后缀影响什么
现代浏览器对后缀不敏感,但服务器或本地双击打开时行为不同:
- 本地双击
index.htm在某些旧 Windows 系统上可能用 IE7 兼容模式加载 - 部分静态托管服务(如 GitHub Pages)默认只识别
.html为页面,.htm可能返回 404 或下载而非渲染 - Node.js 开发服务器(如
serve、vite)通常只映射.html为主入口,.htm需额外配置
建议统一用 .html,避免无谓差异。
在 OpenClaw 中管理 GitHub 仓库、Pull Request、Issue 与工作流。适用于审查 PR、管理 Issue、自动化 GitHub Actions、同步仓库等场景。
立即学习“前端免费学习笔记(深入)”;
把 HTML 当成 XML/XHTML 写的典型翻车点
HTML5 解析器宽容:允许省略结束标签(<p>hello</p><p>world</p> 可简写为 <p>hello<p>world),也接受 <img src="a.jpg"> 这种自闭合写法。但如果你按 XML 规则写,反而容易出问题:
- 写
<img src="a.jpg" />没错,但若服务器返回Content-Type: application/xhtml+xml,浏览器就真按 XML 解析——此时<div>hello<span>world</div>会直接崩溃白屏 -
<script>console.log("x")</script>在 HTML 中正常;但在 XML 模式下,若脚本含<或&,必须转义或包进<![CDATA[...]]>,否则解析失败 - 所有标签名必须小写(
<DIV>在 XML 中非法),属性名也必须小写(CLASS→class)
真正要盯住的,从来不是“选什么格式”,而是:文档声明是否干净、后缀是否被环境支持、以及你写的到底是 HTML 还是假装是 HTML 的 XML —— 后者最容易在上线后突然失效,而且错误不报在控制台,只静默降级。

















