h5的新特性有哪些?
html 5 总的来说比 html 4 多了十个新特性,但是其不支持 ie 8 及以下版本的浏览器
- 语义化标签
- 增强型表单
- 视频和音频
- canvas 绘图
- svg 绘图
- 地理定位
- 拖放 API
- WebWorker
- WebStorage
- WebSocket
一 语义标签
标签 |
描述 |
header |
定义了文档的头部区域 |
footer |
定义了文档的尾部区域 |
nav |
定义了文档的导航 |
section |
定义了文档中的章节 |
article |
定义文章 |
aside |
定义页面以外的内容 |
details |
定义用户可以看到或者隐藏的额外细节 |
summary |
标签包含 details 元素的标题 |
dialog |
定义对话框 |
main |
定义文档主内容 |
mark |
定义文档的主内容 |
time |
定义日期/时间 |

二 增强型表单
html 5 修改一些新的 input 输入特性,改善更好的输入控制和验证
输入类型 |
描述 |
color |
用于选取颜色 |
date |
用于选取日期 |
datetime |
选取日期(UTC 时间) |
datetime-local |
选取日期(无时区) |
month |
选取一个月份 |
week |
选择周和年 |
time |
选择一个时间 |
email |
包含 e-mail 地址的输入框 |
number |
数字的输入框 |
url |
url 地址的输入框 |
tel |
定义输入电话号码和字段 |
search |
用于搜索框 |
range |
一个范围内数字值的输入框 |
html 新增了五个表单元素
元素 |
描述 |
datalist |
用于会在他们输入数据时看到域定义选项的下拉列表 |
progress |
进度条,展示连接/下载速度 |
meter |
刻度值,用于某些计量,例如温度/重量等 |
keygen |
提供一种验证用户的可靠方法,生成一个公钥和私钥 |
output |
用于不同类型的输出,比如脚本输出 |
html 5 新增表单属性
属性 |
描述 |
placeholder |
输入框默认提示文字 |
required |
输入框的内容是否可以为空 |
pattern |
描述一个正则表达式验证输入的值 max/max |
min/max |
设置元素最小/最大值 |
step |
为输入域规定合法的数字间隔 |
height/width |
用于 image 类型 <input> 标签图像高度/宽度 |
autofocus |
规定在页面加载时,域自动获得焦点 |
multiple |
规定 <input> 元素中可选择多个值 |
三 音频和视频
html 5 增加了音频和视频文件的标准
音频: <audio src=""></audio>
<audio controls> //controls属性提供添加播放、暂停和音量控件。
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
您的浏览器不支持 audio 元素。 //浏览器不支持时显示文字
</audio>
视频: <video src=""></video>
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
您的浏览器不支持Video标签。
</video>
四 canvas 绘图
canvas 是 HTML 5 新增的,一个可以使用 js 在其中绘制图像的 HTML 元素,他可以用来制作动画/视频处理和渲染
五 svg 绘图
- 什么是 svg?
- svg 指可伸缩矢量图形
- svg 用于定义用于网络的基本适矢量的图形
- svg 使用 xml 格式定义图形
- svg 图像在放大或改变尺寸的情况下其图形质量不会有损失
- svg 是万维网联盟的标准
- svg 的优势
- svg 图像可以通过文本编辑器来创建和修改
- svg 图像可被搜索/索引/脚本化或压缩
- svg 是可伸缩的
- svg 图片可在任何的分辨率下被高质量的打印
- svg 可在图像质量不下降的情况下被放大
- svg 与 canvas 的区别
- svg 适用于描述 xml 中的 2 D 图形的语言
- canvas 随时随地绘制 2 D 图形
- svg 是基于 xml 的,这意味着可以操作 dom,渲染速度较慢
- 在 svg 中每个形状都被当做是一个对象,如果 svg 发生改变,页面就会发生重绘
- canvas 是一像素一像素地渲染,如果改变某一个位置,整个画布会重绘
canvas |
svg |
依赖分辨率 |
不依赖分辨率 |
不支持事件处理器 |
支持事件处理器 |
能够以.png 或者.jpg 格式保存结果图像 |
复杂度中减慢渲染速度 |
文字呈现功能比较简单 |
适合大型渲染区域的应用程序 |
最适合图像密集的游戏 |
不适合游戏应用 |
六 地理定位
使用 getCurrentPosition
方法来获取用户的位置,以实现 LBS 服务
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
<title>Document</title>
</head>
<body>
<div id="demo">地理定位</div>
</body>
<script>
const x = document.getElementById('demo')
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition)
} else {
x.innerHTML = 'Geolocation is not supported by this browser.'
}
}
function showPosition(position) {
x.innerHTML =
'Latitude: ' +
position.coords.latitude +
'<br />Longitude: ' +
position.coords.longitude
}
getLocation()
</script>
</html>
七 拖拽 API
在 HTML 5 中,拖放是标准的一部分,任何元素都能够拖放
拖放是一种常见的特性,即捉取对象以后拖到另一个位置
<div draggable="true"></div>
当用上拖动时,我们可以检查其拖动的数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
<title>Document</title>
</head>
<body>
<div
draggable="true"
ondragstart="drag(event)"
>
拖拽
</div>
<script>
function drag(ev) {
console.log(ev)
}
</script>
</body>
</html>
拖动生命周期 |
属性名 |
描述 |
拖动开始 |
ondragstart |
在拖动操作开始时执行脚本 |
拖动过程中 |
ondrag |
只要脚本在被拖动就运行脚本 |
拖动过程中 |
ondragentr |
当元素被拖动到一个合法的防止目标时,执行脚本 |
拖动过程中 |
ondragover |
只要元素正在合法的防止目标上拖动时,就执行脚本 |
拖动过程中 |
ondragleave |
当元素离开合法的防止目标时 |
拖动结束 |
ondrop |
将被拖动元素放在目标元素内运行脚本 |
拖动结束 |
ondragend |
在拖动操作结束时运行脚本 |
八 Web Worker
Web Worker 可以通过加载一个脚本文件进而创建一个独立工作的线程,在主线程之外运行
基本使用:
Web Worker 的基本原理就是在当前 js 的主线程中,使用 Worker 类加载一个 js 文件来开辟一个新的线程,起到互不阻塞的效果,并且提供主线程和新线程之间数据交换的接口:postMessage/onMessage
//worker.js
onmessage = function (evt) {
const d = evt.data //通过evt.data获取发送过来的线程
console.log('🚀 ~~- d:', d)
postMessage(d) //将获取到底额数据发送回主线程
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
<title>Document</title>
</head>
<body>
<script>
const worker = new Worker('worker.js')
worker.postMessage('hello world')
worker.onmessage = function (evt) {
console.log('🚀 ~~- evt:', evt.data)
}
</script>
</body>
</html>
九 Web Storage
WebStorage 是 html 新增的本地存储解决方案之一,但是并不是取代 cookie 而指定的标准,cookie 作为 html 协议的一部分用来处理客户端和服务端的通信是不可获缺的,session 正式依赖于实现的客户端状态保持
WebStorage 的意图用来解决本来不应该 cookie 做,却不得不用 cookie 的本地存储
WebStorage 拥有 5 m 的存储空间,而 cookie 只有 4 k,这是完全不能比的
客户端存储有两个对象,其用法是基本一致的
localStorage:没有时间限制的数据存储
sessionStorage:在浏览器关闭的时候就会清除
localStorage.setItem(key,value);//保存数据
let value = localStorage.getItem(key);//读取数据
localStorage.removeItem(key);//删除单个数据
localStorage.clear();//删除所有数据
let key = localStorage.key(index);//得到某个索引的值Ï
十 WebSocket
WebSocket 协议为 web 应用程序客户端和服务端之间提供了一种全双工通信机制
特点:
- 握手阶段采用 HTTP 协议,默认端口是 80 和 443
- 建立在 TCP 协议基础之上,和 http 协议同属于应用层
- 可以发送文本,也可以发送二进制文件
- 没有同源限制,客户端可以与任意服务器通信
- 协议标识符是 ws(如果加密为 wss),如 wx://localhost:8000