符合w3c规范的html5骨架需五处核心要素:1.首行;2.带bcp 47标准语言属性;3.紧接内第二行;4.语义标签正确嵌套(如不嵌套于);5.必须含标题。

写一个符合 W3C 规范的 HTML5 骨架,关键不是“多写”,而是“写对位置、用对标签、设对属性”。只要五处核心要素全部到位,验证器基本不会报错。
必须放在第一行的 DOCTYPE 声明
这一行必须是文件最开头、第一个字符,不能有空格、BOM、注释或 PHP 输出:
-
正确写法:
(全小写,无空格,独占首行) -
错误写法:
<!-- 注释 -->、<code><?php echo '<!DOCTYPE html>'; ?>、 - 写错会导致浏览器进入“怪异模式”,
document.compatMode返回"BackCompat",Flex、margin、盒模型全乱
根元素必须带合法 lang 属性
标签不能裸奔,必须声明语言,且值要精确到地区:
-
推荐写法:
(大陆简体)、(美式英文) -
禁止写法:
lang="zh"、lang="cn"、lang="ch"—— 这些不符合 BCP 47 标准,屏幕阅读器和搜索引擎无法准确识别 - 局部切换语言可用
<p lang="en">Hello</p>,但不要滥用
meta charset 必须紧接在 head 开头
字符编码声明必须出现在 内的第二行(即 后、<title></title> 前),否则中文、emoji 一出现就乱码:
-
正确位置:
<meta charset="UTF-8"> <title>…</title> -
禁止写法:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">(HTML5 中冗余) - 编辑器保存时选 “UTF-8 without BOM”,VS Code 默认可能带 BOM,需手动关闭
语义化结构区域不可嵌套错位
HTML5 的语义标签不是装饰,而是给辅助技术与搜索引擎“指路”的锚点:
-
<main></main>全局只能有一个,且不能嵌套在<header></header>、<footer></footer>、<nav></nav>或<aside></aside>内部 -
<section></section>必须包含标题(<h1>–<h6></h6> </h1>),否则语义不成立 -
<nav></nav>只包裹导航链接集合,按钮、搜索框、登录入口别塞进去 - 避免通篇
<div class="header"> 这类写法,直接用 <code><header></header>











