概述
在做移动端Web页面时,常常使用到一些HTML5的新特特性。而HTML5的设计目的是为了在移动设备上支持多媒体。经常有些同学问到相关的问题,这里做些详细全面的总结,不定期的更新。
新特性
- 用于绘画的canvas元素
- 用于媒介回放的 video 和 audio 元素
- 对本地离线存储的更好的支持
- 新的特殊内容元素,比如article、footer、header、nav、section
- 新的表单控件,比如calendar、date、time、email、url、search
简洁的DOCTYPE
HTML5 只有一个简单的文档类型:<!DOCTYPE html>
。它不使用版本,因此该文档类型适用所有版本的HTML。
简单易记的语言标签
你并不需要在<html>
中使用xmlns 或xml:lang标记。<html lang=”en”>
将对HTML5 有效。
简单易记的编码类型
你现在可以在meta 标签中使用’charset’:<meta charset=”utf-8″ />
具有boolean值的属性
|
|
HTML5的基本布局
|
|
<article>
元素代表文档、页面或应用程序中独立的、完整的、可以独自被外部引用的内容,与上下文不相关的独立内容<section>
表示页面中的一个内容区块,比如章节、页眉、页脚或页面中的其他部分- 不要为没有标题的内容区块使用section元素
<nav>
表示页面中导航链接的部分,例如:传统导航条,侧边栏导航,页内导航,翻页等<aside>
表示article元素的内容之外的、与article元素的内容相关的辅助信息,它可以包含与当前页面或主要内容相关的引用、侧边栏、广告、导航条,以及其他类似的有别于主要内容的部分<header>
表示页面中一个内容区块或整个页面的标题<hgroup>
将标题及其子标题进行分组的元素。hgroup元素通常会将h1-h6元素进行分组,譬如一个内容区块的标题及其子标题算一组。1234<hgroup><h1>文章主标题</h1><h2>文章子标题</h2></hgroup>
一个普通的Html5页面结构会如下所示:
HTML5对表单的增强
Html5新增了多个控件类型,如输入网址的url类型,输入电子邮箱地址的email类型,用于输入日期的date类型,更有用于输入颜色的color类型等等。更为神奇的是这些类型还内建表单验证,如required属性就说明该表项不能为空,max属性提供了该表项输入允许的最大值,当然在Html4中这些功能也可以通过javascript来实现,但是的内建在Html5中的表单验证优越性不言而喻。需要注意的是,现在Html5的输入类型还没有被所有浏览器所支持。
感兴趣的同学可以测试下面的代码:
input标签新增的TYPE:
视频和音频的支持
视频的支持
带控制器的视频播放器
video 元素允许含有多个 source 元素。source 元素可以链接不同的视频文件。浏览器将使用第一个可识别的格式:
- 如果浏览器支持video元素,也支持H264(mp4格式),那么就使用第一个视频;
- 如果浏览器支持video元素,不支持H264(mp4格式)但支持Ogg,那么用第二个视频;
- 如果浏览器不支持video元素,那么就播放Flash;
- 如果浏览器不支持video元素,也不支持Flash,那么就给出了下载链接。
属性 | 值 | 说明 |
---|---|---|
autoplay | autoplay | 如果出现该属性,则视频在就绪后马上播放。 |
controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
loop | loop | 如果出现该属性,则当媒介文件完成播放后再次开始播放。 |
muted | muted | 规定视频的音频输出应该被静音。 |
poster | URL | 规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。 |
preload | preload | 如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。 |
src | url | 要播放的视频的 URL |
width | pixels | 设置视频播放器的宽度。 |
height | pixels | 设置视频播放器的高度。 |
音频的支持
|
|
如果考虑到不同浏览器对视频文件的兼容性
属性 | 值 | 说明 |
---|---|---|
autoplay | autoplay | 如果出现该属性,则音频在就绪后马上播放。 |
controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
loop | loop | 如果出现该属性,则每当音频结束时重新开始播放。 |
preload | preload | 如果出现该属性,则音频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。 |
src | url | 要播放的音频的 URL |
本地存储
一提到存储,大家可能第一时间想到的是本地的文件存储,服务端的数据库存储等。那么html5时代,我们的存储是否会有更多选择呢?答案是肯定的。
关于存储
在html5之前的存储方式:
- cookies诞生
- 通过http请求头带到不同页面上
- 一个域名下的cookie大小限制为4k(谷歌火狐不限制大小,但数量过多同样会有问题)
- 主域名污染,子域名的请求,都会把主域名的cookie带上。 (可以比较qq.com和y.qq.com的cookie比较document.cookie=”lesson=html5;path=/;domain=qq.com”)
- UserData
- 只有IE才支持
- xml文件
HTML的web存储方法
HTML5 提供两种web存储方法,localStorage 与 sessionStorage
|
|
localStorage 与 sessionStorage 区别
过期时间:
大小:
在使用 web 存储前,应检查浏览器是否支持 localStorage 和sessionStorage:
|
|
两者特点:
localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem和removeItem等
localStorage和sessionStorage的方法
setItem存储value 用途:将value存储到key字段 用法:.setItem( key, value) 代码示例:
12sessionStorage.setItem("key", "value");localStorage.setItem("site", "js8.in");getItem获取value 用途:获取指定key本地存储的值 用法:.getItem(key) 代码示例:
12var value = sessionStorage.getItem("key");var site = localStorage.getItem("site");removeItem删除key 用途:删除指定key本地存储的值 用法:.removeItem(key) 代码示例:
12sessionStorage.removeItem("key");localStorage.removeItem("site");clear清除所有的key/value 用途:清除所有的key/value 用法:.clear() 代码示例:
12sessionStorage.clear();localStorage.clear();
如果要保存非字符串的内容,建议使用JSON来处理。
写入数据时用JSON.stringify转成字符串
12var data = {a:1,b:2,c:3};localStorage.setItem("data",JSON.stringify(data));读取数据时用JSON.parse把字符串转为之前的格式。
12var JasonString =localStorage.getItem("data");console.log(JSON.parse(JasonString));
storage事件
storage还提供了storage事件,当键值改变或者clear的时候,就可以触发storage事件,如下面的代码就添加了一个storage事件改变的监听:
storage事件对象的具体属性如下表:
- storageArea: 表示存储类型(Session或Local)
- key:发生改变项的key
- oldValue: key的原值
- newValue: key的新值
- url*: key改变发生的URL