合格的html5页面必须以开头,且包含、(含)、、四要素;缺一不可,否则触发怪异模式或功能异常。

用什么结构才算合格的 HTML5 页面
浏览器只认 开头,缺了它,哪怕写满新标签也进不了 HTML5 模式——会触发怪异模式,<code>flex 布局错位、input[type="date"] 降级成文本框都是轻的。
必须包含的最小骨架只有四样:、(带 <meta charset="utf-8">)、<title></title>、。少一个,SEO、可访问性、甚至部分 JS 初始化都可能出问题。
-
<meta name="viewport">不是可选——手机端不加这行,页面默认缩放为桌面宽度,文字小到看不清 - 别用
<center></center>或align="right"这类废弃属性,HTML5 不再支持,渲染结果不可控 -
<header></header>、<nav></nav>、<main></main>这些语义标签不是“装饰”,用了才能被读屏软件识别,否则残障用户根本不知道哪是导航哪是正文
哪些 HTML5 标签该立刻用,哪些先别碰
优先落地的是浏览器支持稳、有明确替代价值的标签:<section></section> 替代无意义的 <div class="section">,<code><time></time> 包裹日期让搜索引擎能提取时间信息,<figure></figure>+<figcaption></figcaption> 组合比 <div>
<img alt="如何设计第一个html5网页" ><p> 更准确表达图文关系。</p>
<p>别急着用的是:尚未普及或行为不一致的特性,比如 <code><dialog></dialog> 在 Safari 里需要手动 showModal() 才生效,<details></details> 的样式在各浏览器里默认差异大,没加 CSS 前可能完全看不出可展开。
立即学习“前端免费学习笔记(深入)”;
-
<article></article>不等于“一篇文章”——它表示独立可复用的内容单元,博客列表里的每条摘要才该用,整个博客页反而该用<main></main> -
<canvas></canvas>和<svg></svg>别混用:图标、图表用<svg></svg>(缩放不失真、可 CSS 控制),游戏、实时绘图用<canvas></canvas>(JS 操作像素) - 表单新增的
required、email、number等属性只是前端校验,后端该验证还得验证,不能当安全防线
CSS 和 JS 加载顺序直接影响页面是否“可用”
把 <script></script> 放在 末尾?页面会白屏卡住,直到 JS 下载执行完——用户看到的是空白,不是加载中。
正确做法就两条:<link rel="stylesheet"> 必须放在 里(否则 CSS 加载前 HTML 先裸奔渲染,闪动严重);<script></script> 默认阻塞解析,要么加 defer(等 DOM 构建完再执行),要么加 async(下载不阻塞,但执行时机不确定),或者干脆扔到 前。
- 现代项目常用
<script type="module"></script>,它自带defer行为,且支持import,但 IE 完全不支持,需确认目标用户 -
<style></style>标签内联 CSS 要极简——只放首屏关键样式(如字体、背景色),其余全走外链,避免阻塞 HTML 解析 - 用
loading="lazy"属性给图片懒加载,但别给首屏轮播图加——它会导致首屏内容延迟出现
本地预览时 Chrome 报 “Not allowed to load local resource” 怎么办
这是浏览器安全策略,直接双击打开 HTML 文件(file:// 协议)时,fetch、XMLHttpRequest、<iframe></iframe> 加载本地文件都会被拦——不是你代码错,是协议限制。
解决方法只有一个:起个本地服务。不用装复杂工具,Node.js 自带 npx serve,Python 3 写 python3 -m http.server 8000,甚至 VS Code 装 Live Server 插件点一下就行。只要地址变成 http://localhost:8000,问题消失。
- 别用 Python 2 的
SimpleHTTPServer——它不支持 HTTP/1.1 的某些头,某些现代 API(如fetch带mode: "cors")会失败 - 如果必须离线演示(比如 U 盘交付),只能把所有资源内联:CSS 用
<style></style>,JS 用<script></script>,图片转 base64 放src里——但文件体积会暴涨,慎用 - Chrome 启动参数
--allow-file-access-from-files是临时绕过方案,仅限调试,发给别人用等于教人关掉安全锁
最常被忽略的其实是字符编码声明位置——<meta charset> 必须在 前 1024 字节内,否则某些服务器返回的 BOM 或注释可能让它失效,中文变乱码就找不到原因。










