今天来总结一下HTML5的新特性(面试必问!!)

414 阅读5分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1、语义化标签

html5语义标签,可以使开发者更方便清晰构建页面的布局

标签描述
<header>定义了文档的头部区域
<footer> 定义了文档的尾部区域 
<nav> 定义文档的导航 
 <section> 定义文档中的节
 <article> 定义文章
 <aside> 定义页面以外的内容
 <details>定义用户可以看到或者隐藏的额外细节
 <summary>标签包含details元素的标题 
 <dialog> 定义对话框 
<figure>定义自包含内容,如图表
<main>定义文档主内容
<mark>定义文档的主内容
<time>定义日期/时间

image.png

2、Canvas绘图

<canvas> 是 HTML5 新增的,一个可以使用脚本(通常为 JavaScript) 在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处理和渲染。

3、## SVG

SVG是html5的另一项图形功能,它是一种标准的矢量图形,是一种文件格式,有自己的API。html5引入了内联SVG,使得SVG元素可以直接出现在html标记中。

<svg height=100 width=100><circle cx=50 cy=50 r=50 /></svg>

4、音频和视频

audio和video元素的出现让html5的媒体应用多了新选择,开发人员不必使用插件就能播放音频和视频。对于这两个元素,html5规范提供了通用、完整、可脚本化控制的API。 html5规范出来之前,在页面中播放视频的典型方式是使用Flash、QuickTime或者Windows Media插件往html中嵌入音频视频,相对这种方式,使用html5的媒体标签有两大好处。

  1. 作为浏览器原生支持的功能,新的audio和video元素无需安装。
  2. 媒体元素想Web页面提供了通用、集成和可脚本化控制的API。

<video src="video.webm" controls>
<object data="videoplayer.swf" type="application/x-shockwave-flash">
<param name="movie" value="video.swf" />
</object>
Your browser does not support HTML5 video.
</video>

5、浏览器支持性检测

浏览器检测是否支持audio元素或者video元素最简单的方式是用脚本动态创建它,然后检测特定函数是否存在。

var hasVideo = !!(document.createElement('video').canPlayType);

6、Geolocation API

html5的Geolocation API(地理定位API),可以请求用户共享他们的位置。使用方法非常简单,如果用户同意,浏览器就会返回位置信息,该位置信息是通过支持html5地理定位功能的底层设备(如笔记本电脑或手机)提供给浏览器的。位置信息由纬度、经度坐标和一些其他元数据组成。

位置信息从何而来

Geolocation API不指定设备使用哪种底层技术来定位应用程序的用户。相反,它只是用于检索位置信息的API,而且通过该API检索到的数据只具有某种程度的准确性,并不能保证设备返回的位置是精确的。设备可以使用下列数据源:

  1. IP地址
  2. 三维坐标
    1. GPS
    2. 从RFID、WiFi和蓝牙到WiFi的MAC地址
    3. GSM或CDMA手机的ID

\

  1. 用户自定义数据

使用方法

// 一次更新
navigator.geolocation.getCurrentPosition(updateLocation, handleLocationEror);
function updateLocation(position) {
var latitude = position.coords.latitude; // 纬度
var longitude = position.coords.longitude; // 经度
var accuracy = position.coords.accuracy; // 准确度
var timestamp = position.coords.timestamp; // 时间戳
}
// 错误处理函数
function handleLocationEror(error) {
....
}
// 重复更新
navigator.geolocation.watchPosition(updateLocation, handleLocationEror);
// 不再接受位置更新
navigator.geolocation.clearWatch(watchId);

7、Forms API

新表单元素

  1. tel元素,表示电话号码。
  2. email元素,表示电子邮件地址文本框。
  3. url元素,表示网页的url。
  4. search元素,用于搜索引擎,比如在站点顶部显示的搜索框。
  5. range元素,特定值范围内的数值选择器,典型的显示方式是滑动条。
  6. number元素,只包含数值的字段。

未来的表单元素

  1. color元素,颜色选择器,基于调色盘或者取色板进行选择。
  2. datetime元素,显示完整的日期和时间,包括时区。
  3. datetime-local,显示日期和时间。
  4. time元素,不含时区的时间选择器和指示器。
  5. date元素,日期选择器。
  6. week元素,某年中的周选择器。
  7. month元素,某年中的月选择器。

新的表单特性和函数

placeholder

当用户还没输入值的时候,输入型控件可以通过placeholder特性向用户显示描述性说明或者提示信息。

<input name="name" placeholder="First and last name">

autocomplete

浏览器通过autocomplete特性能够知晓是否应该保存输入值以备将来使用。

autofocus

通过autofocus特性可以指定某个表单元素获得输入焦点,每个页面上只允许出现一个autofocus特性,如果设置了多个,则相当于未指定此行为。

spellcheck

可对带有文本内容的输入控件和textarea空间控制spellcheck属性。设置完后,会询问浏览器是否应该给出拼写检查结果反馈。spellcheck属性需要赋值。

list特性和datalist元素

通过组合使用list特性和datalist元素,开发人员能够为某个输入型控件构造一张选值列表。

<datalist id="contactList">
<option value="a@qq.com"></option>
<option value="b@qq.com"></option>
</datalist>
<input type="email" id="contatcs" list="contactList">

min和max

通过设置min和max特性,可以将range输入框的数值输入范围限定在最低值和最高值之间。可以只设置一个,也可以两个都设置,也可以都不设置。

step

对于输入型控件,设置其step特性能够指定输入值递增或者递减的粒度。

required

一旦为某输入型控件设置了required特性,那么此项必填,否则无法提交表单。

8、Web Storage API

Web Storage是html5引入的一个非常重要的功能,可以在客户端本地存储数据,类似html4的cookie,但可实现功能要比cookie强大的多。

sessionStorage

sessionStorage将数据保存在session中,浏览器关闭数据就消失。

localStorage

localStorage则一直将数据保存在客户端本地,除非手动删除,否则一直保存。 不管是sessionStorage,还是localStorage,可使用的API相同,常用的有如下几个(以localStorage为例):

  1. 保存数据:localStorage.setItem(key,value);
  2. 读取数据:localStorage.getItem(key);
  3. 删除单个数据:localStorage.removeItem(key);
  4. 删除所有数据:localStorage.clear();
  5. 得到某个索引的key:localStorage.key(index);