HTML5的介绍
Web 技术发展时间线
• 1991 HTML
• 1994 HTML2
• 1996 CSS1 + JavaScript
• 1997 HTML4
• 1998 CSS2
• 2000 XHTML1(严格的html)
• 2002 Tableless Web Design(表格布局)
• 2005 AJAX
• 2009 HTML5
• 2014 HTML5 Finalized
2009年就已经推出了HTML5的草案,但直到2014年才有定稿,是因为有移动端的推动。
H5草案的前身是叫:Web Application,最早是由WHATWG这个组织在2004年提出的。
2007年被 W3C 组织接纳,并在 2008-01-22 发布 HTML5 的第一个草案。
什么是 HTML5
HTML5并不仅仅只是做为HTML标记语言的一个最新版本,更重要的是它制定了Web应用开发的一系列标准,成为第一个将Web做为应用开发平台的HTML语言。
HTML5定义了一系列新元素(新标签),如新语义标签、智能表单、多媒体标签等,可以帮助开发者创建富互联网应用,还提供了一些Javascript API,如地理定位、重力感应、硬件访问等,可以在浏览器内实现类原生应用。我们甚至可以结合 Canvas 开发网页版游戏。
HTML5的广义概念:HTML5代表浏览器端技术的一个发展阶段。在这个阶段,浏览器的呈现技术得到了飞跃发展和广泛支持,它包括:HTML5新标签、CSS3、Javascript API在内的一套技术组合。
HTML5不等于 HTML next version。HTML5 包含: HTML的升级版、CSS的升级版、JavaScript API的升级版。
总结:HTML5是Web应用开发的一系列标准。包括:HTML5,CSS3,Javascript API在内的一套技术组合。
API(application program interface):程序应用接口(不需要关心应用程序的内部实现,只需要知道接口名,调用即可。)
HTML5 的应用场景
列举几个HTML5 的应用场景:
(1)极具表现力的网页:内容简约而不简单(代码实现)。
(2)网页应用程序:
• 代替PC端的软件:iCloud、百度脑图、Office 365等。
• APP端的网页:淘宝、京东、美团等。(通过网页实现的web应用程序)
• 微信端:公众号、小程序等。
(3)混合式本地应用。
(4)简单的游戏。(html5 代替了flash做动画)
HTML5 新增的内容
之前说过,html是包括:HTML5,CSS3,Javascript API在内的一套技术组合,我们现在只介绍关于HTML中新增加的部分。
H5中新增的语义标签
• <section>
表示区块
• <article>
表示文章。如文章、评论、帖子、博客
• <header>
表示页眉
• <footer>
表示页脚
• <nav>
表示导航
• <aside>
表示侧边栏。如文章的侧栏
• <figure>
表示媒介内容分组。
• <mark>
表示标记 (用得少)
• <progress>
表示进度 (用得少)
• <time>
表示日期
本质上新语义标签与<div>
、<span>
没有区别,只是其具有表意性,使用时除了在HTML结构上需要注意外,其它和普通标签的使用无任何差别,可以理解成<div class="nav">
相当于<nav>
。
PS:单标签不用写关闭符号。
H5中的表单
传统的Web表单已经越来越不能满足开发的需求,HTML5 在 Web 表单方向做了很大的改进,如拾色器、日期/时间组件等,使表单处理更加高效。
H5中新增的表单类型
• email 只能输入email格式。自动带有验证功能。
• tel 手机号码。
• url 只能输入url格式。
• number 只能输入数字。
• search 搜索框
• range 滑动条
• color 拾色器
• time 时间
• date 日期
• datetime 时间日期
• month 月份
• week 星期
上面的部分类型是针对移动设备生效的,且具有一定的兼容性,在实际应用当中可选择性的使用。
代码举例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<title>表单类型</title>
</head>
<body>
<form action="">
<fieldset>
<legend>表单类型</legend>
<label for="">
email: <input type="email" name="email" required>
</label>
<label for="">
color: <input type="color" name="color">
</label>
<label for="">
url: <input type="url" name='url'>
</label>
<label for="">
number: <input type="number" step="3" name="number">
</label>
<label for="">
range: <input type="range" name="range" value="100">
</label>
<label for="">
search: <input type="search" name="search">
</label>
<label for="">
tel: <input type="tel" name="tel">
</label>
<label for="">
time: <input type="time" name="time">
</label>
<label for="">
date: <input type="date" name="date">
</label>
<label for="">
datetime: <input type="datetime">
</label>
<label for="">
week: <input type="week" name="month">
</label>
<label for="">
month: <input type="month" name="month">
</label>
<label for="">
datetime-local: <input type="datetime-local" name="datetime-local">
</label>
<input type="submit">
</fieldset>
</form>
</body>
</html>
代码解释:
<fieldset>
标签将表单里的内容进行打包,代表一组;而 标签的则是 fieldset 里的元素定义标题。
<label>
标签
<label>
标签为 input 元素定义标注(标记)。
label 元素不会向用户呈现任何特殊效果。<label>
标签的 for 属性应当与相关元素的 id 属性相同。
多媒体
在HTML5之前,在网页上播放音频/视频的通用方法是利用Flash来播放。但是大多情况下,并非所有用户的浏览器都安装了Flash插件,由此使得音频、视频播放的处理变得非常复杂;并且移动设备的浏览器并不支持Flash插件。
H5里面提供了视频和音频的标签。
音频
HTML5通过标签来解决音频播放的问题。
使用举例:
<audio src="music/yinyue.mp3" autoplay controls> </audio>
我们可以通过附加属性,来更友好地控制音频的播放,如:
• autoplay 自动播放。写成autoplay 或者 autoplay = “”,都可以。
• controls 控制条。(建议把这个选项写上,不然都看不到控件在哪里)
• loop 循环播放。
• preload 预加载 同时设置 autoplay 时,此属性将失效。
处理兼容性问题:
由于版权等原因,不同的浏览器可支持播放的格式是不一样的:
为了做到多浏览器支持,可以采取以下兼容性写法:
<!--推荐的兼容写法:-->
<audio controls loop>
<source src="music/yinyue.mp3"/>
<source src="music/yinyue.ogg"/>
<source src="music/yinyue.wav"/>
抱歉,你的浏览器暂不支持此音频格式
</audio>
代码解释:如果识别不出音频格式,就弹出那句“抱歉”。
视频
HTML5通过标签来解决视频播放的问题。
使用举例:
我们可以通过附加属性,来更友好地控制视频的播放,如:
• autoplay 自动播放。写成autoplay 或者 autoplay = “”,都可以。
• controls 控制条。(建议把这个选项写上,不然都看不到控件在哪里)
• loop 循环播放。
• preload 预加载 同时设置 autoplay 时,此属性将失效。
• width:设置播放窗口宽度。
• height:设置播放窗口的高度。
由于版权等原因,不同的浏览器可支持播放的格式是不一样的:
兼容性写法:
<!--<video src="video/movie.mp4" controls autoplay ></video>-->
<video controls autoplay>
<source src="video/movie.mp4"/>
<source src="video/movie.ogg"/>
<source src="video/movie.webm"/>
抱歉,不支持此视频
</video>