HTML所有版本共用不可替代的底层骨架:必须有<html>根元素,其下直接包含<head>(含<title>)和<body>,缺一不可;基础标签语义与行为一致,编码声明需前置且文件编码匹配,但语义新标签混用会导致校验与无障碍问题。
所有 HTML 版本(HTML4、XHTML1.0、HTML5)都共享一套不可替代的底层骨架,只要这个骨架完整,浏览器就能解析并渲染页面——它不依赖新标签,也不因 DOCTYPE 变化而失效。
无论哪个版本,<html> 必须是文档最外层标签,<head> 和 <body> 必须直接作为其子元素存在。缺失任一,浏览器会自动补全,但 DOM 结构不可控,脚本获取 document.body 可能失败或延迟。
<head> 里至少要有 <title>(否则页面标题为空,影响 SEO 和标签页识别)<body> 可为空,但不能被省略;XHTML 要求闭合标签写法(</body>),HTML4/HTML5 允许省略,但建议显式写出<div><p><div></p></div> 在所有版本中都会被浏览器纠错,但纠错逻辑不一致:HTML5 按“树构建算法”修复,XHTML 直接报错不渲染像 <p>、<h1>–<h6>、<ul>、<ol>、<li>、<a>、<img> 这些基础标签,在所有版本中含义和默认样式行为一致。它们不因 HTML5 引入 <section> 就失效,也不因 XHTML 要求小写就改变语义。
<img> 始终是 void 元素,HTML4 写 <img src="x">、XHTML 写 <img src="x" />、HTML5 回归前者,但浏览器对两种写法都接受<a> 的 href 属性在所有版本中决定链接目标,target="_blank" 行为一致,但 HTML5 新增 rel="noopener" 才真正解决安全问题data-id)在 HTML4 中无效,在 XHTML 中需声明命名空间,在 HTML5 中原生支持——但若只用 id 或 class,跨版本完全兼容<meta charset="utf-8"> 在 HTML5 中是标准写法,但它能在 HTML4/XHTML 页面中起作用,前提是它出现在 <head> 最前面(通常前 1024 字节内),且文档本身保存为 UTF-8 编码。
立即学习“前端免费学习笔记(深入)”;
<meta http-equiv="content-type" content="text/html; charset=utf-8">,两者效果等价,但后者更冗长<meta>,直接按 BOM 判定编码——这是跨版本都存在的陷阱application/xhtml+xml MIME 类型),则编码由 HTTP 头或 XML 声明(<?xml version="1.0" encoding="UTF-8"?>)决定,<meta> 被忽略真正容易被忽略的是:共通点不等于“可混用”。比如把 HTML5 的 <header> 放进一个声明为 HTML4 的 DOCTYPE 页面里,浏览器照常渲染,但校验器报错、SEO 工具可能降权、屏幕阅读器识别率下降——结构没崩,语义却断了。