文章の目录
正文
HTML5 简介
什么是 HTML5?
- HTML5 是最新的 HTML 标准。
- HTML5 是专门为承载丰富的 web 内容而设计的,并且无需额外插件。
- HTML5 拥有新的语义、图形以及多媒体元素。
- HTML5 提供的新元素和新的 API 简化了 web 应用程序的搭建。
- HTML5 是跨平台的,被设计为在不同类型的硬件(PC、平板、手机、电视机等等)之上运行。
HTML5 的新的文档类型声明
HTML5 的新的文档类型(DOCTYPE)声明非常简单:
<!DOCTYPE html>
<meta charset="UTF-8">
注:
- HTML5 中默认的字符编码是 UTF-8。
(如需了解 HTML 和 HTML5 的文件结构,请阅读笔者另一篇文章:HTML入门与进阶 中 HTML 文件结构。)
HTML5 新特性
HTML5 的一些最有趣的新特性:
- 新的语义元素。比如 <header>,<footer>,<article>,<section>。
- 新的表单控件。比如数字、日期、时间、日历和滑块。
- 强大的图像支持(借由 <canvas> 和 <svg> )。
- 强大的多媒体支持(借由 <video> 和 <audio> )。
- 强大的新 API,比如用本地存储取代 cookie。
新语义/结构元素
section 元素
- <section> 元素定义文档中的节。
- 根据 W3C 的 HTML 文献:节(section)是具有主题的内容组,通常具有标题。
- 可以将网站首页划分为简介、内容、联系信息等节。
article 元素
- <article> 元素规定独立的自包含内容。
- 文档有其自身的意义,并且可以独立于网站其他内容进行阅读。
- <article> 元素应用场景:
- 论坛
- 博客
- 新闻
header 元素
- <header> 元素为文档或节规定页眉。
- <header> 元素应该被用作介绍性内容的容器。
- 一个文档中可以有多个 <header> 元素。
footer 元素
- <footer> 元素为文档或节规定页脚。
- <footer> 元素应该提供有关其包含元素的信息。
- 页脚通常包含文档的作者、版权信息、使用条款链接、联系信息等等。
- 可以在一个文档中使用多个 <footer> 元素。
nav 元素
- <nav> 元素定义导航链接集合。
- <nav> 元素旨在定义大型的导航链接块。不过,并非文档中所有的链接都应该位于 <nav> 元素中。
aside 元素
- <aside> 元素定义页面主内容之外的某些内容(比如侧栏)。
- aside 内容应该与周围内容相关。
新输入类型/表单控件
HTML5 增加了多个新的输入类型:
- color
- date
- datetime
- datetime-local
- month
- number
- range
- search
- tel
- time
- url
- week
注:
- 老式 web 浏览器不支持的输入类型,会被视为输入类型 text。
输入类型
输入类型:number
<input type="number"> 用于应该包含数字值的输入字段。
可以设定对所接收数字的限定。
使用以下属性来规定对数字类型的限定:
- disabled —— 规定输入字段应该被禁用
- readonly —— 规定输入字段为只读(无法修改)
- value —— 规定输入字段的默认值
- maxlength —— 规定输入字段的最大字符数
以下为 HTML5 新增内容- max —— 规定输入字段的最大值
- min —— 规定输入字段的最小值
- step —— 规定输入字段的合法数字间隔
- required —— 规定输入字段是必需的(必需填写)
IE9 及早期版本不支持 type="number"。
输入类型:date
<input type="data"> 用于应该包含日期的输入字段(包括年、月、日)。
根据浏览器支持,日期选择器会出现在输入字段中。
添加限制:
- max="2000-01-02" —— 仅可输入 2000-01-02 之前的日期,包括 2000-01-02
- min="2000-01-02" —— 仅可输入 2000-01-02 之后的日期,包括 2000-01-02
FireFox 或者 Internet Explorer 11 以及更早版本不支持 type="data"。
输入类型:month
<input type="month"> 允许用户选择月份和年份(无时区)。
根据浏览器支持,日期选择器会出现在输入字段中。
FireFox 或者 Internet Explorer 11 以及更早版本不支持 type="month"。
输入类型:week
<input type="week"> 允许用户选择周和年(无时区)。
根据浏览器支持,日期选择器会出现在输入字段中。
Internet Explorer 不支持 type="week"。
输入类型:time
<input type="time"> 允许用户选择时间(无时区)。
根据浏览器支持,时间选择器会出现在输入字段中。
FireFox 或者 Internet Explorer 11 以及更早版本不支持 type="time"。
输入类型:datetime
<input type="datetime"> 允许用户选择日期和时间(有时区、UTC 时间即格林威治时间)。
根据浏览器支持,日期选择器会出现在输入字段中。
Chrome、Firefox 或 Internet Explorer 不支持 type="datetime"。
输入类型:datetime-local
<input type="datetime-local"> 允许用户选择日期和时间(无时区,本地时间即电脑设置的时间)。
根据浏览器支持,日期选择器会出现在输入字段中。
Firefox 或 Internet Explorer 不支持 type="datetime-local"。
输入类型:color
<input type="color"> 用于应该包含颜色的输入字段。
根据浏览器支持,颜色选择器会出现在输入字段中。
Internet Explorer 不支持 type=“color”。
输入类型:range
<input type="range"> 用于应该包含一定范围内的值的输入字段。
根据浏览器支持,输入字段能够显示为滑块控件。
可以使用如下属性来规定限制:min、max、step、value。
IE9 及早期版本不支持 type="range"。
输入类型:email
<input type="email"> 用于应该包含电子邮件地址的输入字段。
根据浏览器支持,能够在被提交时自动对电子邮件地址进行验证(提交时会检测是否包含 @ 符,并且 @ 符前后是否有字符)。
某些智能手机会识别 email 类型,并在键盘增加 ".com" 以匹配电子邮件输入。
IE9 及早期版本不支持 type="email"。
输入类型:search
<input type="search"> 用于搜索字段(搜索字段的表现类似常规文本字段)。
输入类型:tel
<input type="tel"> 用于应该包含电话号码的输入字段。
目前只有 Safari 8 支持 tel 类型。
输入类型:url
<input type="url"> 用于应该包含URL地址的输入字段。
根据浏览器支持,在提交时能够自动验证 url 字段(输入的网址应该是 http:// 或 https:// 开头,并且后面必须有字符)。
某些智能手机会识别 url 类型,并向键盘添加 ".com" 以匹配 url 输入。
IE9 及其更早版本不支持 type="url"。
Input 属性
min 和 max 属性
min 和 max 属性规定 <input> 元素的最小值和最大值。
min 和 max 属性适用于以下输入类型:number、range、date、datetime、datetime-local、month、time 以及 week。
step 属性
step 属性规定 <input> 元素的合法数字间隔。
例:如果 step="3",则合法数字应该是 -3、0、3、6 等等。
step 属性可与 max 以及 min 属性一同使用,来创建合法值的范围。
step 属性适用于以下输入类型:number、range、date、datetime、datetime-local、month、time 以及 week。
placeholder 属性
placeholder 属性规定用以描述输入字段预期值的提示(样本值或有关格式的简短描述)。
该提示会在用户输入值之前显示在输入字段中。
placeholder 属性适用于以下输入类型:text、search、url、tel、email 以及 password。
form 属性
form 属性规定 <input> 元素所属的一个或多个表单。
如需引用一个以上的表单,请使用空格分隔的表单 id 列表。
required 属性
required 属性是布尔属性。
如果设置,则规定在提交表单之前必须填写输入字段。
required 属性适用于以下输入类型:text、search、url、tel、email、password、number、checkbox、radio、file 以及 date pickers(日期选择器,包括date、month、week、time、datetime、datetime-local)。
autofocus 属性
autofocus 属性是布尔属性。
如果设置,则规定当页面加载时 <inpuut> 元素应该自动获得焦点。
Internet Explorer 9 以及更早的版本不支持 input 标签的 autofocus 属性。
multiple 属性
multiple 属性是布尔属性。
如果设置,则规定允许用户在 <input> 元素中输入一个以上的值。
multiple 属性适用于以下输入类型:file 和 email。
音频audio、视频video
- <audio> 播放音频 —— 支持 .mp3、.wav、.ogg 格式音频文件
- <video> 播放视频 —— 支持 .mp4、.webm、.ogg 格式视频文件
属性
实例:
<video src="1.ogg" controls="controls">
您的浏览器不支持Video标签
</video>
音频/视频格式兼容性解决方案
- audio/video 组合 source 元素。
- 可以链接不同的音视频文件,也可以为同一个媒体数据指定多个播放格式。
- 浏览器将使用第一个可识别的格式。
实例:
<video width="320px" height="240px" controls="controls">
<source src="movie.ogg" type="video/ogg">
<source src="movie.mp4" type="video/mp4">
您的浏览器不支持video
</video>
JavaScript API
常用控制函数:
只读的媒体属性:
可脚本控制的属性值:
新 API
HTML5 Web 存储
HTML5 Web 存储,一个比 cookie 更好的本地存储方式。
什么是 HTML5 Web 存储?
- 使用 HTML5 可以在本地存储用户的浏览数据。
- 在 HTML5 之前,本地存储使用的是 cookie。
- Web 存储更加安全,并且可以在不影响网站性能的前提下将大量数据存储于本地。
- 与 cookie 不同,存储限制要大得多(5MB左右),并且信息不会被传输到服务器。
- 数据以 键/值 对的形式存在,web 网页的数据只允许该网页访问使用。
localStorage 和 sessionStorage
客户端存储数据的两个对象为:
- localStorage —— 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
- sessionStorage —— 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
在使用 web 存储前,应检查浏览器是否支持 localStorage 和 sessionStorage:
if(typeof(Storage)!=="undefined"){
// 针对 localstorage/sessionStorage 的代码
}else{
// 抱歉!不支持 Web Storage ...
}
localStorage 对象
localStorage 对象存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。
- localStorage.setItem(key,value) —— 存储数据
- localStorage.getItem(key) —— 读取数据
- localStorage.removeItem(key) —— 删除单个数据
- localStorage.clear() —— 删除所有数据
- localStorage.key(index) —— 得到某个索引的 key
注:
- 键/值对始终存储为字符串。如果需要请记得把它们转换为其他格式。
例:
// 存储数据
localStorage.setItem("firstname","li");
// 读取数据
localStorage.getItem("firstname");
// 上例也可这样写:
// 存储
localStorage.firstname = "li";
// 读取
localStorage.firstname;
sessionStorage 对象
sessionStorage 对象针对一个 session (会话)进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
- sessionStorage.setItem(key,value)
- sessionStorage.getItem(key)
- sessionStorage.removeItem(key)
- sessionStorage.clear()
- sessionStorage.key(index)
Web 存储 vs Cookie
Web 存储 和 Cookie 区别在于:
- 存储大小。Web 存储大小 5M 左右,然而 Cookie 的存储大小更小并且和浏览器本身有关(4K左右)。
- Cookie 存储的内容会保留在 HTTP 请求的 Header 中,并且会随每次请求发送到浏览器;然而 Web 存储只会保留在客户端,浏览器请求过程不会发送到服务端。