细数HTML5新特性
HTML5作为HTML最新的版本,已是于2014年完成标准指定。其最初的设计目的本来是为运行在移动设备上,而今在前端面试题中也层出不穷,下面将把HTML5揉碎,一点一点细数它的新特性。
语义标签
HTML5中的语义化标签可使页面的内容结构化,加强了通读性,也有利于开发人员的阅读,例如下面代码
1 | ``` |
增强型表单
HTML5中增加了表单中Input的输入类型,开放了相关的输入控制。
| color | 主要用于选取颜色 |
|---|---|
| date | 从一个日期选择器选择一个日期 |
| datetime | 选择一个日期(UTC时间) |
| datetime-local | 选择一个日期和时间(无时区) |
| 包含 e-mail 地址的输入域 | |
| month | 选择一个月份 |
视频和音频
HTML5提供了播放音频和视频文件的标准
1 | <audio controls> |
Canvas绘图
HTML5中,canvas作为标签容器,而绘图交由JavaScript完成。
- 首先,创建画布,并可在画布中定义些样式
1 | <canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"></canvas> |
- 使用Javascript来绘制图像
1 | var c=document.getElementById("myCanvas"); //首先,找到 <canvas> 元素 |
SVG绘图
SVG是指可伸缩的矢量图形,而SVG与Canvas两者的区别如下:
- Canvas 通过 JavaScript 来绘制 2D 图形,SVG 是一种使用 XML 描述 2D 图形的语言
地理定位
HTML5 Geolocation(地理定位)用于定位用户的位置。
1 | window.navigator.geolocation { |
拖放API
拖放,即抓取对象以后拖到另一个位置。
拖放的源对象可触发的事件:
- dragstart:拖动开始
- drag:拖动中
- dragend:拖动结束
拖放的目标对象可触发的事件:
- dragenter:拖动着进入
- dragover:拖动着悬停
- dragleave:拖动着离开
- drop:释放
1 | draggable="true" //首先在源对象上元素为可拖放 |
WebWorker
当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成(单线程)。
Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后台运行,两者互不干扰。等到 Worker 线程完成计算任务,再把结果返回给主线程。
Web Worker 有以下几个使用注意点:
- 同源限制:分配给 Worker 线程运行的脚本文件,必须与主线程的脚本文件同源。
- DOM 限制:Worker 线程所在的全局对象,与主线程不一样,无法读取主线程所在网页的 DOM 对象,也无法使用document、window、parent这些对象。但是,Worker 线程可以navigator对象和location对象。
- 通信联系:Worker 线程和主线程不在同一个上下文环境,它们不能直接通信,必须通过消息完成。
- 脚本限制:Worker 线程不能执行
alert()方法和confirm()方法,但可以使用 XMLHttpRequest 对象发出 AJAX 请求。 - 文件限制:Worker 线程无法读取本地文件,即不能打开本机的文件系统(file://),它所加载的脚本,必须来自网络。
使用详情
主线程
1 | var worker = new Worker('work.js'); //新建一个 Worker 线程 |
Worker线程
1 | self.addEventListener('message', function (e) { |
WebStorage
客户端存储数据的两个对象为:
- localStorage:没有时间限制的数据存储
- sessionStorage:针对一个 session 的数据存储, 当用户关闭浏览器窗口后,数据会被删除。
WebSocket
…
