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中新增加的部分。
总结:HTML的职责是描述一块内容是什么(或其意义),而不是它长什么样子;它的外观应该由CSS来决定。
H5中新增的语义标签
• <section>
表示区块
• <article>
表示文章。如文章、评论、帖子、博客
• <header>
表示页眉 成对
• <footer>
表示页脚
• <nav>
表示导航
• <aside>
表示侧边栏。如文章的侧栏
• <figure>
表示媒介内容分组。
• <mark>
表示标记 (用得少)
• <progress>
表示进度 (用得少)
• <time>
表示日期
• <main>
主要内容区,一个页面中main仅能使用一次
本质上新语义标签与<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>
标签将表单里的内容进行打包,代表一组;而<legend>
标签的则是 fieldset 里的元素定义标题。
<label>
标签
<label>
标签为 input 元素定义标注(标记)。
label 元素不会向用户呈现任何特殊效果。<label>
标签的 for 属性应当与相关元素的 id 属性相同。
多媒体
在HTML5之前,在网页上播放音频/视频的通用方法是利用Flash来播放。但是大多情况下,并非所有用户的浏览器都安装了Flash插件,由此使得音频、视频播放的处理变得非常复杂;并且移动设备的浏览器并不支持Flash插件。
H5里面提供了视频和音频的标签。
音频
HTML5通过<audio>
标签来解决音频播放的问题。
使用举例:
<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通过<video>
标签来解决视频播放的问题。
使用举例:
我们可以通过附加属性,来更友好地控制视频的播放,如:
• 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>