一、Html5优势
- 跨平台:唯一一个通吃PC MAC Iphone Android等主流平台的跨平台语言
- 快速迭代
- 降低成本
- 导流入口多
- 分发效率高
二、新的 DOCTYPE和字符集
(1)头部申明
<!DOCTYPE html> 声明一般位于文档的第一行,它的作用主要是告诉浏览器以什么样的模式来解析文档。一般指定了之后会以标准模式来进行文档解析,否则就以兼容模式进行解析。在标准模式下,浏览器的解析规则都是按照最新的标准进行解析的。而在兼容模式下,浏览器会以向后兼容的方式来模拟老式浏览器的行为,以保证一些老的网站的正确访问。在 html5 之后不再需要指定 DTD 文档,因为 html5 以前的 html 文档都是基于 SGML 的,所以需要通过指定 DTD 来定义文档中允许的属性以及一些规则。而 html5 不再基于 SGML 了,所以不再需要使用 DTD。
(2)字符集
<meta charset="UTF-8">
三、语义化标签
(1)header
header 元素通常用来放置在网站页面头部做标题,可以包含网站logo照片、搜索表单及其他内容。具有引导和导航的作用。
(2)nav
nav元素用于定义导航链接
(3)article
article元素代表文档、页面或者应用程序中与上下文不相关的独立部分,该元素经常被用于定义一篇日志、一条新闻或用户评论等。
(4) aside
aside 元素用来定义当前页面或者文章的附属信息部分,它可以包含与当前页面或主要内容的引用、侧边栏、广告、导航条等其他类似的有别于主要内容的部分。
aside元素的用法主要有如下两种:
- 被包含在article元素内作为主要内容的附属信息。
- 在
article
元素之外使用,作为页面或站点全局的附属信息部分。最常用的使用方式是侧边栏,其中的内容可以是友情链接、广告单元等。
(5)section
section 元素用于对网站或应用程序中页面上的内容进行分块,一个section
元素通常由内容和标题组成。
在使用section
元素时,需注意:
- 不要将
section
元素用来设置样式的页面容器,那是div
的特性。section
元素并非一个普通的容器元素,当一个容器需要被直接定义样式或通过脚本定义行为时,推荐使用div
。 - 如果
article
元素、aside
元素或nav
元素更符合使用条件,那么不要使用section
元素。 - 没有标题的内容区块不要使用
section
元素定义
(6)footer 元素
footer 元素用于定义一个页面或者区域的底部,可以包含所有通常放在页面底部的内容。
一个页面可以包含多个footer
元素,也可以在article
元素或者section
元素中添加footer
元素。
<!-- 头部 -->
<header>
<ul class="nav"></ul>
</header>
<!-- 主体部分 -->
<div class="main">
<!-- 文章 -->
<article></article>
<!-- 侧边栏 -->
<aside></aside>
</div>
<!-- 底部 -->
<footer>
</footer>
其他:
可以参考下这个总结,用的时候查询
四、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>
<style>
body {
margin: 0;
padding: 0;
background-color: #F7F7F7;
}
form {
max-width: 500px;
width: 100%;
margin: 32px auto 0;
font-size: 16px;
}
label {
display: block;
margin: 10px 0;
}
input {
width: 100%;
height: 25px;
margin-top: 2px;
display: block;
}
</style>
</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 里的元素定义标题。
表单属性
-
placeholder
占位符(提示文字) -
autofocus
自动获取焦点 -
multiple
文件上传多选或多个邮箱地址 -
autocomplete
自动完成(填充的)。on 开启(默认),off 取消。用于表单元素,也可用于表单自身(on/off) -
form
指定表单项属于哪个form,处理复杂表单时会需要 -
novalidate
关闭默认的验证功能(只能加给form) -
required
表示必填项 -
pattern
自定义正则,验证表单。例如
代码举例:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
form {
width: 100%;
/* 最大宽度*/
max-width: 640px;
/* 最小宽度*/
min-width: 320px;
margin: 0 auto;
font-family: "Microsoft Yahei";
font-size: 20px;
}
input {
display: block;
width: 100%;
height: 30px;
margin: 10px 0;
}
</style>
</head>
<body>
<form action="">
<fieldset>
<legend>表单属性</legend>
<label for="">
用户名:<input type="text" placeholder="例如:smyhvae" autofocus name="userName" autocomplete="on" required/>
</label>
<label for="">
电话:<input type="tel" pattern="1\d{10}"/>
</label>
<label for="">
multiple的表单: <input type="file" multiple>
</label>
<!-- 上传文件-->
<input type="file" name="file" multiple/>
<input type="submit"/>
</fieldset>
</form>
</body>
</html>
表单事件
-
oninput()
:用户输入内容时触发,可用于输入字数统计。 -
oninvalid()
:验证不通过时触发。比如,如果验证不通过时,想弹出一段提示文字,就可以用到它。
举例:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
form {
width: 100%;
/* 最大宽度*/
max-width: 400px;
/* 最小宽度*/
min-width: 200px;
margin: 0 auto;
font-family: "Microsoft Yahei";
font-size: 20px;
}
input {
display: block;
width: 100%;
height: 30px;
margin: 10px 0;
}
</style>
</head>
<body>
<form action="">
<fieldset>
<legend>表单事件</legend>
<label for="">
邮箱:<input type="email" name="" id="txt1"/>
</label>
<label for="">
输入的次数统计:<input type="text" name="" id="txt2"/>
</label>
<input type="submit"/>
</fieldset>
</form>
<script>
var txt1 = document.getElementById('txt1');
var txt2 = document.getElementById('txt2');
var num = 0;
txt1.oninput = function () { //用户输入时触发
num++; //用户每输入一次,num自动加 1
//将统计数显示在txt2中
txt2.value = num;
}
txt1.oninvalid = function () { //验证不通过时触发
this.setCustomValidity('亲,请输入正确哦'); //设置验证不通过时的提示文字
}
</script>
</body>
</html>
多媒体
在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>
标签来解决视频播放的问题。
使用举例:
<video src="video/movie.mp4" controls autoplay></video>
我们可以通过附加属性,来更友好地控制视频的播放,如:
-
autoplay
自动播放。写成autoplay
或者autoplay = ""
,都可以。 -
controls
控制条。(建议把这个选项写上,不然都看不到控件在哪里) -
loop
循环播放。 -
preload
预加载 同时设置 autoplay 时,此属性将失效。 -
width
:设置播放窗口宽度。 -
height
:设置播放窗口的高度。
由于版权等原因,不同的浏览器可支持播放的格式是不一样的:
<!--<video src="video/movie.mp4" controls autoplay ></video>-->
<!-- 行内块 display:inline-block -->
<video controls autoplay>
<source src="video/movie.mp4"/>
<source src="video/movie.ogg"/>
<source src="video/movie.webm"/>
抱歉,不支持此视频
</video>