HTML5 的核心标识是第一行严格位于文件开头的 <!DOCTYPE html> 声明,前面不能有空格、BOM 或注释;其余如语义化标签、新属性、新元素等均为辅助判断依据。

看 <!DOCTYPE html> 声明是否在第一行
这是最直接、最不可绕过的 HTML5 标识。HTML5 不再依赖 DTD 引用,只认这一行且必须严格位于文件开头(前面不能有空格、BOM 或注释)。
- ✅ 正确:
<!DOCTYPE html> <html><head>...</head><body>...</body></html>
- ❌ 错误:
<!-- 注释 --> <!DOCTYPE html>
(BOM 或注释前置会导致浏览器进入怪异模式) - ❌ 错误:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
(这是 HTML4 的 DTD 声明,不是 HTML5)
检查是否使用了 HTML5 语义化标签
虽然不是强制标识,但大量出现 <header>、<nav>、<article>、<section>、<aside>、<footer> 等标签,是人工判断 HTML5 源码的强信号。
- 这些标签在旧版 IE(如 IE8 及以下)中默认无样式且不被识别,需靠
document.createElement()或html5shiv补丁支持 -
<main>是 HTML5.1 加入的,若存在说明源码较新,但兼容性更窄(IE 完全不支持) - 注意:仅用语义标签 ≠ 就是 HTML5 —— 必须配合
<!DOCTYPE html>才生效,否则浏览器可能按 Quirks 模式解析
留意 HTML5 新增的全局属性和表单特性
源码中若出现以下内容,基本可确认是面向 HTML5 编写的:
-
contenteditable、hidden、data-*(自定义属性)等全局属性 - 表单控件带
required、placeholder、autofocus、email、url、number等 type 或属性 -
<canvas>、<video>、<audio>标签及其controls、preload等原生属性 - 避免混淆:
async和defer属性虽在 HTML4 后期引入,但真正普及是在 HTML5 生态中,它们出现在<script>标签上也是辅助线索
警惕“伪 HTML5”:DOCTYPE 正确但实际用法陈旧
很多老项目只是把 <!DOCTYPE html> 往旧 HTML4 源码头上一贴,就自称“已升级 HTML5”,但源码里仍满屏 <font>、<center>、<table> 布局、name 替代 id、或 script 写在 <body> 底部却没用 DOMContentLoaded。
立即学习“前端免费学习笔记(深入)”;
- 这类代码在验证器里可能“通过”,但不符合 HTML5 的设计哲学和现代实践
- 真正识别 HTML5 源码,不能只看有没有新标签,而要看是否回避了已被废弃的元素和属性(如
align、background、border等 presentational 属性) - 工具辅助建议:用 W3C Nu Validator 提交源码,它会明确标出 HTML5 不允许的用法
HTML5 的源码识别,核心锚点永远只有 <!DOCTYPE html> 这一行;其余都是佐证。最容易被忽略的是 BOM 和空白字符导致 DOCTYPE 失效——看似写了,实则没用。











