上一篇博客中已经介绍了h5的一些新标签,在这篇博客中我将做详细介绍。
a) 提高可用性和改进用户的友好体验;
b) 有几个新的标签,这将有助于开发人员定义重要的内容;
c) 可以给站点带来更多的多媒体元素(视频和音频);
d) 可以很好的替代FLASH和Silverlight;
e) 当涉及到网站的抓取和索引的时候,对于SEO很友好;
f) 将被大量应用于移动应用程序和游戏;
g) 可移植性好。
该标准并未能很好的被Pc端浏览器所支持。因新标签的引入,各浏览器之间将缺少一种统一的数据描述格式,造成用户体验不佳。
我们首先看看原来的H4页面结构
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Documenttitle>
head>
<body>
body>
html>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Documenttitle>
head>
<body>
body>
html>
H5 结构:简洁
doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Documenttitle>
head>
<body>
body>
html>
标签 | 描述 |
---|---|
|
标签定义图形,比如图表和其他图像。该标签基于 JavaScript 的绘图 API |
标签 | 描述 |
---|---|
|
定义音频内容 |
|
定义视频(video 或者 movie) |
|
定义多媒体资源 和 字体 |
|
定义嵌入的内容,比如插件。 |
|
为诸如 和 元素之类的媒介规定外部文本轨道。 |
标签 | 描述 |
---|---|
|
定义选项列表。请与 input 元素配合使用该元素,来定义 input 可能的值。 |
|
规定用于表单的密钥对生成器字段。 |
|
定义不同类型的输出,比如脚本的输出。。 |
HTML5提供了新的元素来创建更好的页面结构:
标签 | 描述 |
---|---|
|
定义页面的侧边栏内容 |
|
定义页面内容之外的内容。 |
|
允许您设置一段文本,使其脱离其父元素的文本方向设置。 |
|
定义命令按钮,比如单选按钮、复选框或按钮 |
|
用于描述文档或文档某个部分的细节 |
|
定义对话框,比如提示框 |
|
标签包含 details 元素的标题 |
|
规定独立的流内容(图像、图表、照片、代码等等)。 |
|
定义 元素的标题 |
|
定义 section 或 document 的页脚。 |
|
定义了文档的头部区域 |
|
定义带有记号的文本。 |
|
定义度量衡。仅用于已知最大和最小值的度量。 |
|
定义运行中的进度(进程)。 |
|
定义任何类型的任务的进度。 |
|
定义 ruby 注释(中文注音或字符)。 |
|
定义字符(中文注音或字符)的解释或发音。 |
|
在 ruby 注释中使用,定义不支持 ruby 元素的浏览器所显示的内容。 |
|
定义文档中的节(section、区段)。 |
|
定义日期或时间。 |
|
规定在文本中的何处适合添加换行符。 |
/*手动创建标签:默认的标签的类型都是行级元素*/
document.createElement("header");
document.createElement("nav");
document.createElement("main");
document.createElement("article");
document.createElement("aside");
document.createElement("footer");
在不支持HTML5新标签的浏览器里,会将这些新的标签解析成行内元素(inline)对待,所以我们只需要将其转换成块元素(block)即可使用,但是在IE9版本以下,并不能正常解析这些新标签,但是却可以识别通过document.createElement(‘tagName’)创建的自定义标签,于是我们的解决方案就是将HTML5的新标签全部通过document.createElement(‘tagName’)来创建一遍,这样IE低版本也能正常解析HTML5新标签了。
<script src="../js/html5shiv.min.js">script>
:与input配合使用:类似于拥有输入功能的下拉列表
:提供一种验证用户数据的可靠方法。在提交表单数据的时候,会生成两个键,一个私钥,一个公钥。私钥存储在本地,公钥发送到服务器。在需要做验证的时候,我们可以从服务器下载一个客户端证书,通过私钥和证书来实现相关的验证操作。
:度量器,可用于标示级别属性 | 值 | 描述 |
---|---|---|
high | number | 定义度量的值位于哪个点,被界定为高的值。 |
low | number | 定义度量的值位于哪个点,被界定为低的值。 |
max | number | 定义最大值。默认值是 1。 |
min | number | 定义最小值。默认值是 0。 |
optimum | number | 定义什么样的度量值是最佳的值。如果该值高于 “high” 属性,则意味着值越高越好。如果该值低于 “low” 属性的值,则意味着值越低越好。 |
value | number | 定义度量的值。 |
:用于展示内容,只能展示,不能进行编辑autocomplete:属性规定表单是否应该启用自动完成功能。autocomplete 属性适用于 <form>,以及下面的 input 类型:text, search, url, telephone, email, password, datepickers, range 以及 color。<br>
<form action="" autocomplete="on">
autofocus定位文本框焦点:<input type="text" autofocus> <br>
placeholder设置文本框默认提示:<input type="text" placeholder="请输入***"><br>
email邮件类型自带验证和提示:<input type="email"> <br>
required属性设置非空特性:<input type="tel" required><br>
pattern设置验证规则:<input type="tel" name="tel" required pattern="^(\+86)?1[358]\d{5}$"><br>
multiple多文件选择:<input type="file" multiple><br>
<input type="submit" value="提交"/>
form>
a) email: 输入email格式
b) tel: 手机号码
c) url: 只能输入url格式
d) number: 只能输入数字
e) search: 搜索框
f) range: 范围,可以进行拖动,通过value进行取值
g) color :拾色器,通过value进行取值
h) time :时间
i) date: 日期 不是绝对的
j) datetime: 时间日期
k) month: 月份
l) week: 星期
说明:部分类型是针对移动设备生效的,且具有一定的兼容性,在实际应用当中可选择性的使用。
<script>
/*oninput可以监听用户的每一次输入*/
document.getElementById("name").oninput=function(){
console.log(this.value);
}
/*监听键盘弹起,每一个键盘弹出触发一次*/
document.getElementById("name").onkeyup=function(){
console.log("---"+this.value);
}
/*当指定表单元素验证不通过时触发*/
document.getElementById("phone").oninvalid=function(){
console.log("验证不通过");
}
script>
样式:
结构:
<body>
<form action="">
<fieldset>
<legend>学生档案legend>
<label for="userName">姓名:label>
<input type="text" name="userName" id="userName" placeholder="请输入姓名" required>
<label for="phone">手机号码:label>
<input type="tel" name="phone" id="phone" pattern="^(\+86)?1[358]\d{9}$">
<label for="email">邮箱地址:label>
<input type="email" name="email" id="email">
所属学院:
<input type="text" list="school" name="college" id="college" placeholder="请选择">
<datalist id="school">
<option>移动与前端开发学院option>
<option>IOSoption>
<option>andriodoption>
<option>c++option>
datalist>
<label for="score">入学成绩:label>
<input type="number" max="100" min="0" step="1" name="score" id="score" value="0">
<label for="level">基础水平label>
<meter name="level" id="level" value="0" max="100" min="0" low="59" high="90">meter>
<label for="inTime">入学日期label>
<input type="date" name="inTime" id="inTime">
<label for="leaveTime">毕业日期label>
<input type="date" name="leaveTime" id="leaveTime">
<input type="submit" name="submit" id="submit" class="btn">
fieldset>
form>
<script>
/*通过score成绩的输入,动态修改meter的颜色*/
document.getElementById("score").oninput=function(){
document.getElementById("level").value=this.value;
}
script>
body>
说明:
标签将表单内容的一部分打包,生成一组相关表单的字段。当一组表单元素放到 标签内时,浏览器会以特殊方式来显示它们,它们可能有特殊的边界、3D 效果,或者甚至可创建一个子表单来处理这些元素。controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
loop | loop | 如果出现该属性,则每当音频结束时重新开始播放。 |
preload | preload | 如果出现该属性,则音频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。 |
src | url | 要播放的音频的 URL。 |
<audio src="../mp3/See.mp3" controls autoplay>audio>
autoplay | autoplay | 如果出现该属性,则视频在就绪后马上播放。 |
controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
height | pixels | 设置视频播放器的高度。 |
loop | loop | 如果出现该属性,则当媒介文件完成播放后再次开始播放。 |
preload | preload | 如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。 |
src | url | 要播放的视频的 URL。 |
width | pixels | 设置视频播放器的宽度。 |
<video src="../mp3/561902ae6ac6e6649.mp4" controls>video>
1、 练习重点:
i. 获取元素的方式
ii. 自定义属性的使用
iii. 类名操作:如添加类样式,移除类样式
结构:
<div class="tabs">
<div>
<a href="javascript:;" data-target="local">国内新闻a>
<a href="javascript:;" data-target="global">国际新闻a>
<a href="javascript:;" data-target="sports">体育新闻a>
<a href="javascript:;" data-target="funny">娱乐新闻a>
div>
<section class="cont active" id="local">
<ol>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
ol>
section>
<section class="cont active" id="global">
<ol>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
ol>
section>
<section class="cont" id="sports">
<ol>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
ol>
section>
<section class="cont" id="funny">
<ol>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
<li>xxxxxxxxxxxxxxxxxxxxli>
ol>
section>
div>
js:
<script>
(function(key){
//1.获取所有a标签
var allA=document.querySelector(".tabs").querySelector("div:first-child").querySelectorAll("a");
//初始化操作
for(var i=0;i<allA.length;i++){
if(i==key){
allA[i].classList.add("active");
var active=allA[i].dataset["target"];
document.querySelector("#"+active).style.display='block';
}
//2.循环遍历所有的a标签,为其添加点击事件
allA[i].onclick=function(){
//3.判断当前是否是当前已激活的页,如果是,则不进行处理
if(this.classList.contains("active")){
return;
}
//4.否则,则需要找到当前a标签对应的data-target属性,利用这个属性找到对应id的section进行样式的设置,让其显示
//4.1先移除之前a标签的active类样式
var aActive=document.querySelector(".active");
aActive.classList.remove("active");
//4.2让之前显示的section隐藏
var currentTarget=aActive.dataset["target"];
document.querySelector("#"+currentTarget) .style.display ="none";
//4.3为其添加active样式
this.classList.add("active");
//4.4获取当前被点击的a标签的data-target属性
var value=this.dataset["target"];
//4.5让对应id的section显示--添加active类样式即可
document.querySelector("#"+value).style.display="block";
};
}
})(0);
</script>