HTML5通过语义化标签(如、、、)、简化DOCTYPE声明()、增强表单控件(type="email"等)及全局属性(contenteditable、data-*等)提升可访问性与开发效率,同时废弃等非语义元素。

HTML5 新增语义化标签替代 <div> 布局
<p>HTML4 依赖大量 <code><div id="header">、<code><div class="nav"> 实现结构,缺乏语义。HTML5 引入原生语义标签,浏览器和读屏工具能直接识别内容角色:
<ul><li>
<code><header></header> 替代 <div id="header">(但一个页面可有多个 <code><header></header>,不只顶部)
<nav></nav> 专指导航链接区块,不是所有菜单都适用(例如页脚的“友情链接”一般不用 <nav></nav>)<main></main> 必须且仅出现一次,表示页面核心内容;若误用多次或嵌套在 <article></article> 内,会破坏 ARIA 隐式角色<section></section> 要求有标题(<h1>–<h6></h6>
</h1>),否则语义弱于 <div> —— 这点常被忽略
<h3>
<code><doctype></doctype> 和 声明大幅简化
HTML4 需引用 DTD(如 ),区分 Strict / Transitional / Frameset,且大小写敏感。HTML5 彻底移除 DTD 依赖:
<!DOCTYPE html> <html lang="zh-CN">
注意: 必须全小写,且前面不能有任何字符(包括空格、注释),否则触发怪异模式(Quirks Mode),导致盒模型、字体渲染异常。
表单控件和属性原生支持增强
HTML4 表单严重依赖 JavaScript 实现校验和输入类型控制;HTML5 将常用逻辑下沉为原生能力:
立即学习“前端免费学习笔记(深入)”;
-
<input type="email">、<input type="url">、<input type="date">:触发设备原生输入面板(iOS 日期滚轮、安卓邮箱键盘),但 Safari 对type="date"支持有限,需降级方案 -
required、minlength、pattern属性:提交前自动校验,但pattern值是正则字面量(无/g标志),且不支持 Unicode 属性转义(如\p{Han}) -
<output></output>元素:专为 JS 动态计算结果设计,配合for属性关联输入源,比用<span></span>更语义清晰
全局属性和废弃元素的实际影响
HTML5 定义了 contenteditable、hidden、data-* 等全局属性,同时明确废弃部分 HTML4 元素:
-
<font></font>、<center></center>、<u></u>(带下划线)被废除:现代 CSS 可完全替代,但旧 CMS 输出的<u></u>在 Chrome 中仍渲染为下划线(非语义),而 Firefox 默认不显示 —— 存在兼容性偏差 -
data-*属性允许任意命名(如data-user-id="123"),JS 通过element.dataset.userId访问(驼峰转换),但 IE11 不支持连字符后大写字母(data-userId无法读取) -
hidden属性等效于display: none,但优先级高于 CSS,且支持 JS 动态切换(el.hidden = true),比操作className更轻量
语义标签不是“用了就更好”,关键在是否匹配内容本质。比如把侧边栏广告包装成 <aside></aside> 是合理语义,但把主导航塞进 <aside></aside> 反而误导辅助技术。


















