H5并不是新的语言,而是html语言的第五次重大修改版本
支持:
- 所有主流浏览器都支持H5,(chrome,Firefox,safari ……)。
- IE9以上支持H5,有选择地支持并不会全部支持(IE9会把H5新增标签的块级元素解析位行级元素)
- IE8以下不支持H5,无法解析H5标签,也就意味着所写样式无效,这时可以用js创建这些元素,但是创建出来的元素都是行级元素。也可以引入第三方js来支持H5(html5shiv)。
改变了用户与文档的交互方式,多媒体:video audio canvas
相对于H4
- 进步,抛弃了一些不合理不常用的标记和属性
- 新增了一些标记和属性,比如表单
- 从代码角度而言,H5的网页结构代码更简洁
表单中新增属性
autofocus
自动获取光标autocomplete="on"
自动完成 on:打开, off:关闭,前提是提交过而且有name属性才会生效type="tel"
并不会对内容进行手机号让验证,只是可以在移动端调起数字键盘required
必须输入,如果没有输入则会阻止当前数据提交pattern=""
正则表达式的验证multiple
可以选择多个文件;可以输入多个邮箱地址,用,
分隔
表单新增事件
1
2
3
4
5
6
7
8//oninput 监听当前指定元素的改变,只要内容改变就会触发事件
document.getElementById('').oninput = function(){}
//oninvalid 当验证不通过时触发事件
document.getElementById('').oninvalid = function(){
//设置默认提示内容
this.setCustomValidity();
}<progress>
进度条1
2
3<!-- max: 最大值, value: 当前进度值 -->
<progress></progress>
<progress max="100" value="60"></progress><meter>
度量器:衡量当前进度之1
2
3<!-- high: 规定较高值, low: 规定较低值, max:最大值,min:最小值 -->
<meter></meter>
<meter max="100" min="0" high="80" low="50" value="40"></progress><audio>
音频1
2
3
4
5
6<!--
controls: 控制面板
autoplay:自动播放(新版本浏览器已禁止自动播放);
loop:循环
-->
<audio src="" controls autoplay></audio><video>
视频1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<!--
controls: 控制面板
autoplay:自动播放(新版本浏览器已禁止自动播放);
loop:循环;
width:宽度;
height:高度;
poster:视频未播放前默认显示的封面
默认显示视频第一帧
注意:设置宽高时,一般情况下只设置宽度或高度,使其可以等比例缩放
-->
<video src="" controls autoplay></video>
<!-- source 不同浏览器支持的视频格式不同,考虑到浏览器是否支可以准备多个格式的视频文件,让浏览器选择 -->
<video controls>
<source>
<source>
<source>
···
</video>获取dom元素
1
2//querySelector 获取到的是数组,返回满足条件的第一个
document.querySelector('选择器名称');
操作元素类样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14//add 为元素添加指定名称的样式,一次只能添加一个样式
document.querySelector('').classList.add('');
//remove 为元素删除指定名称的样式,一次只能添加一个样式
document.querySelector('').classList.remove('');
//toggle 切换元素样式,没有就添加有则删除
document.querySelector('').classList.toggle('');
//contains 判断元素是否包含指定样式名称,返回true或dfalse
document.querySelector('').classList.contains('');
//获取样式
document.querySelector().classList.item(0)自定义属性及取值
1
2
3//<p data-name="名字"></p>
var p = document.querySelector('p');
var value = p.dataset["name"];网络监听接口
1
2
3
4
5//ononline:网络连通时触发事件
window.addEventListener('online', function(){});
//onoffline:网络断开时触发事件
window.addEventListener('offline', function(){});全屏接口
requestFullScreen()
开启全屏显示
不同浏览器需要添加不同的前缀(早期版本浏览器需要加前缀)
chrome:webkit firefox:moz ie:ms opera:ocancelFullScreen()
退出全屏显示,只能使用document
来实现
不同浏览器需要添加不同的前缀
chrome:webkit firefox:moz ie:ms opera:oexitFullscreen
也是退出全屏,且不用添加前缀fullScreenElement()
判断是否全屏
fileReader
读取文件内容readAsText()
读取文本文件(可以使用text打开的文件),返回文本字符串,默认编码时utf-8readAsBinaryString()
读取任意类型文件。返回二进制字符串.这个方法不是用来读取文件展示给用户看,而是存储文件。例如:读取文件的内容,获取二进制数据,传递给后台,后台接收了数据之后,在将数据存储readAsDataURL()
读取文件获取一段以data开头的字符串,这段字符串的本质就是DataURL。
DataURL是一种将文件(这个文件一般就是指图像或者能够嵌入待文档的文件格式)嵌入到文档的方案。
DataURL是将资源转换为base64编码的字符串形式,并且将这些内容直接存储再url中。优化网站的加载速度和执行效率。abort()
中断读取1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22function getFileContent(){
//1.创建文件读取对象
var reader = new FileReader();
//2.读取文件,获取DataURL
//2.1.readAsDataURL没有任何返回值:coid,但是读取完文件以后,他会将读取的结果存储在文件读取对象的result中
//2.2.需要传递一个参数 binary large object:文件(图片或者其他可以嵌入到文档的类型)
//2.3.文件存储在file表单元素的files属性中,他是一个数组
var file = document.querySelector('').files[0];
reader.readAsDataURL(file);
//获取数据
/* fileReader提供一个完整的事件模型,用来捕获读取文件时的状态
* onabort:读取文件中断时触发
* onerror:读取错误时触发
* onload:文件读取成功完成时触发
* onloadend:读取完成时触发,无论成功还是失败
* onloadstart:开始读取时触发
* onprogress:读取文件过程中持续触发 */
reader.onload = function(){
//console.log(reder.result)
document.querySelector('').src = reader.result;
}
}
拖拽接口
h5中,如果想拖拽元素,就必须为元素添加属性draggable="true"
,图片和超链接默认就可以拖拽1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<div class="div1">
<p id="pe" draggable="true">拖拽的div</p>
</div>
<div class="div2"></div>
<script>
/* 应用于被拖拽元素的事件
* ondrag 整个拖拽过程都会调用
* ondragstart 当拖拽开始时调用
* ondragleave 当鼠标离开拖拽元素时调用
* ondragend 当拖拽结束时调用 */
/* 应用于目标元素的事件
* ondragenter 当拖拽元素进入时调用
* ondragover 当停留在目标元素上时调用
* ondrop 当在目标元素上松开鼠标时调用,浏览器会默认阻止此事件,
如果想触发此事件,及必须在ondragover事件中阻止浏览器的默认行为 evevt.preventDefault()
* ondragleave 当鼠标离开目标元素时调用 */
</script>地理定位接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36function getLocation(){
if(navigator.geolocation){ //判断是否支持
/* 参数
* success:获取地理位置成功之后的回调
* error: 获取地理位置失败之后的回调
* option: 调整获取当前位置信息的方式
enableHighAccuracy: true/false; 是否使用高精度
timeout: 设置超时时间,单位毫秒
maximumAge: 可以设置浏览器重新获取地理位置的时间间隔,单位毫秒
*/
navigator.geolocation.getCurrentPosition(success, error, {});
}else{
console.log('浏览器不能定位')
}
}
//成功之后的回调,如果获取地理位置成功,会将获取到的地理信息传给成功之后的回调
//position.coords.latitude 纬度
//position.coords.longitude 经度
//position.coords.accuracy 精度
//position.coords.altitude 海拔
function success(position){}
//获取位置失败
function error(error){
switch(error.code){
case error.PERMISSION_DENIED: //没有授权
break;
case error.PODITION_UNAVAILABLE: //位置不可用
break;
case error.TIMEOUT: //超时
break;
case error.UNKNOWN_ERROR: //未知错误
break;
}
}web存储
sessionStorage:存储数据到本地。存储的容量5mb左右
*这个数据本质是存在当前页面的内存中,而不是浏览器中
*他的生命周期为关闭当前页面,关闭页面,数据会自动清除
setItem(key, value):存储数据,以键值对的方式存储(window.sessionStorage.setItem(key, value)
)
getItem(key):湖区数据,通过指定名称的key获取对应的value
removeItem(key):删除数据,通过指定名称key删除对应的值
clear():清空所有出处的内容localStorage:存储容量大概20mb
*在同意浏览器的不同窗口中可以共享数据
*存储的数据永久生效,他是存储在硬盘上的,不会随着页面或者浏览器的关闭而清除,如果想清除,必须手动清除
用法与sessionStorage的用法一样(window.localStorage.setItem(key, value)
)
应用缓存
- 概念:使用HTML5,通过创建 cache manifest 文件,可以轻松的创建web应用的离线版本
- 优势:
· 可配置需要缓存的资源
· 网络无连接应用仍可用
· 本地读取缓存资源,提升访问速度,增强用户体验
· 减少请求,缓解服务器负担 - Cache Manifest 基础:
· 如需启用应用程序缓存,请在文档的<html>
标签中包含manifest
属性:· 每个指定了 manifest 的页面在用户对其访问时都会被缓存。如果未指定 manifest 属性,则页面不会被缓存(除非在 manifest 文件中直接指定了该页面)。1
2
<html lang="en" manifest="demo.appchche"></html>
· manifest 文件的扩展名建议是“.appcache”。
· 注意 manifest 文件需要配置正确的 MIME-type,即 “text/cache-manifest”。必须在web服务器上配置 - Manifest文件:
· 概念:manifest文件是简单的文本文件,他告知浏览器被缓存的内容(以及不被缓存的内容)
· manifest文件可分为三个部分:
1.CACHE MANIFEST - 开始
2.CACHE 在此标题下列出的文件将在首次下载后进行缓存
3.NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
4.FALLBACK- 在此标题下列出的文件规定当前页面无法访问时的回退页面(比如404页面)· CACHE MANIFEST说明:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17CACHE MANIFEST
# 上面一句代码必须是当前文档的第一句
# 需要缓存的文件清单列表
CACHE:
# 下面就是需要缓存的清单列表
../img/**.jpg
# *:代表所有文件
# 配置每一次都需要重新从服务器获取的文件清单列表
NETWORK:
../img/**.jpg
# 配置如果文件无法获取则使用指定的文件进行代替
FALLBACK:
../img/**.jpg ../img/**.jpg
# /:代表所有文件