HTML5主要有新标签、新表单特性、Canvas、数据存储、新的网络连接协议web socket、模拟多线程的web worker,还有引入多媒体、地理应用等方面的内容。
HTML5 不基于 SGML,所以不需要引用 DTD。只需使用<!DOCTYPE html>
即可。
html5新增了一些结构型和语义化的标签,比如:section、header、footer、nav、article和aside、figure等。
其中,section用来定义文档中的区域(或节),nav表示主导航区域,article侧重于表示是内容片断,而aside用来表示与页面内容松散相关的内容,可用来做侧边栏、引文、广告等。
html5提供了让<input>
的type特性有更多的值:
也有一些新属性:
datalist 元素规定输入域的选项列表。列表通过 datalist 内的 option 元素创建的。
<input id="awardWon" name="awardWon" type="text" list="awards">
<datalist id="awards">
<select>
<option value="Best Picture"></option>
<option value="Best Director"></option>
</select>
</datalist>
自动提交计算结果
一种新的绘制图形的方法。
SVG 是一种使用 XML 描述 2D 图形的语言,Canvas 通过 JavaScript 来绘制 2D 图形。对比如下:
Canvas | SVG |
---|---|
依赖分辨率 | 不依赖分辨率 |
不支持事件处理器 | 支持事件处理器 |
弱的文本渲染能力 | 最适合带有大型渲染区域的应用程序(比如谷歌地图) |
最适合图像密集型的游戏,其中的许多对象会被频繁重绘 | 不适合游戏应用 |
HTML5 提供了两种在客户端存储数据的新方法:
HTML5 使用 JavaScript 来存储和访问数据。
是一种不同于HTTP的通信协议。最大特点是可以双向通信。事件驱动,常见事件有open、message、error、close等。使用send方法发送数据,监听message事件来接收服务器发回的数据。可以持续连接数据流,流量小,适合做监听状态的工作,游戏、股票、实时视频等。使用全双工工作方式。
WebSocket是Web应用程序的传输协议,它提供了双向的,按序到达的数据流。他是一个HTML5协议,WebSocket的连接是持久的,他通过在客户端和服务器之间保持双工连接,服务器的更新可以被及时推送给客户端,而不需要客户端以一定时间间隔去轮询。
当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。
web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。主要作用是模拟出web多线程。子线程完全受主线程控制,不可访问 DOM APIs。
可以用于:
worker主线程,模拟多线程:
引入<vidio>
和<audio>
标签。
给元素设置draggable="true",它就可以被拖拽了。通过拖放事件,可以控制拖放相关的各个方面。
拖动一个元素时,将依次触发下列事件(作用于被拖动的元素):
默认情况下,浏览器不会在拖动期间改变被拖动元素的外观,但你可以自己修改。不过,大多数浏览器会为正被拖动的元素创建一个半透明的副本,这个副本始终跟随着光标移动。
当元素被拖放到一个有效的放置目标上时,下列事件会依次发生(作用于作为放置目标的元素):
在dragover中一定要执行preventDefault(),否则ondrop事件不会被触发。
dataTransfer 对象是事件e的对象,用来保存被拖拽的数据。有用来设置拖拽效果的属性和用来设置拖拽数据的方法。 dropEffect 属性可以知道被拖动的元素能够执行哪种放置行为(有none,move,copy,link)。只有搭配effectAllowed 属性才有用(ondragstart 事件处理程序中设置)。effectAllowed 属性表示允许拖动元素的哪种dropEffect。
通过在元素上设置contentEditable="true"可以让元素变成可编辑状态。
使用“data-”开头定义自定义属性。在js中可以通过getAttribute来获得,在css中可以通过attr()来获得,可以用于给hover伪类的content赋值。
postMessage()方法接收两个参数:一条消息和一个表示消息接收方来自哪个域的字符串,接收到消息会触发message事件,其事件对象包含data,origin,source三个属性
history.pushState()方法,该方法可以接收三个参数:状态对象、新状态的标题和可选的相对URL。还有popState()方法和replaceState方法。