HTML5 有哪些新特性,移除了哪些元素?

新特性:

移除的元素:

支持 HTML5 新标签:

补充

补充:HTML5 是 HTML 的一次重大升级,主要变化集中在语义、图形、多媒体、表单与能力扩展几个维度。

新增的语义标签

  • 结构类:<header> / <nav> / <main> / <article> / <section> / <aside> / <footer>
  • 媒体类:<audio>、<video>、<source>、<track>、<canvas>
  • 表单类:新增 email、url、number、date、range、search、tel 等 input 类型,以及 <datalist>、<output>、placeholder、required、pattern 等属性

新增的 API 与能力

  • 本地存储:localStorage、sessionStorage
  • 离线:Application Cache(manifest,已被 Service Worker 取代)
  • 通信:WebSocket、Server-Sent Events、postMessage
  • 多线程:Web Worker
  • 图形:Canvas 2D、WebGL、内联 SVG
  • 地理:Geolocation
  • 拖放:HTML5 拖放 API
  • 历史:history.pushState / replaceState

移除的元素

  • 纯展示性标签:<font>、<center>、<big>、<strike>、<tt>、<frame>、<frameset>、<noframes>、<acronym>、<applet>、<basefont>、<dir> 等
  • 部分属性:如 align、bgcolor、border(在 table 上)等表现层属性

让旧 IE 支持 HTML5 新标签

旧 IE(IE6/7/8)不认识新标签,会把它们当作行内元素且无法应用 CSS。常用两种解决方式:

  1. 引入一段 JS 创建这些元素(HTML5 Shiv):
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.net/npm/html5shiv/dist/html5shiv.min.js"></script>
<![endif]-->
  1. 用 JS 手动 document.createElement 后再写 CSS,例如:
document.createElement('header');
document.createElement('nav');
document.createElement('footer');

实际项目里现在已经不需要再考虑 IE8,这种兼容写法基本只剩历史价值。

来源整理自:我的有道云笔记