HTML5

1.HTML语言

无论是html5还是html4...他们都是html语言

HTML5就是html这种网页标记语言的一个版本

HTML5网页标记语HTML5新增的标记和属性
        1.用于绘画的 canvas 元素
        2.用于媒介回放的 video 和 audio 元素
        3.对本地离线存储的更好的支持
        4.新的特殊内容元素,比如 article、footer、header、nav、section
        5.新的表单控件,比如 calendar、date、time、email、url、search

1.1HTML5 语义元素

HTML5 提供了新的语义元素来明确一个网页的不同部分 

HTML5 语义元素--语义元素 = 有意义的元素
当我们看到元素的名称之后,就能知道这个html元素的作用

语义元素:header    nav    section    article   aside     figcaption    figure   footer

例如:我们设置一个表头 

header 元素描述了网页内容的顶部区域

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="head" style="background-color: aquamarine;width: 100px;height: 50px;"> 
        </div><br />
		<header style="background-color: aquamarine;width: 100px;height: 50px;">
        </header>
	</body>
</html>

 可以看到俩个元素完成的效果完全相同,我们可以简单的认为HTML5语义元素<header></header>代替<div id="head"></div> 

由此可以说明 语义元素就是一个带有名称的 div容器

nav 标签定义导航链接的部分 

footer元素描述了文档的底部区域 

<div id="head" style="background-color: royalblue;width: 100%;height: 50px;"> 
</div><br />
<nav style="background-color: royalblue;width: 100%;height: 50px;">
</nav><br>
<footer style="background-color: royalblue;width: 100%;height: 50px;">
</footer>

我们可以看出nav,footer元素也是可以代替div的。

那么header,nav和footer都是一样可以代替div,为什么会有多个语义元素?

 可以看到所有的语义元素都有自己所负责的地方。

 大家可以看到其中 article 元素和 section 元素是嵌套关系。

article 标签定义独立的区域内容。

section 标签定义文档中的节(section、区段)

<article>
	    <h3>文章标题</h3>
			<section>
				<h4>第一节</h4>
				<p>文章内容文章内容文章内容文章内容文章内容文章内容文章内容</p>
			</section>
			<section>
				<h4>第二节</h4>
				<p>文章内容文章内容文章内容文章内容文章内容文章内容文章内容</p>
			</section>
			<section>
				<h4>第三节</h4>
				<p>文章内容文章内容文章内容文章内容文章内容文章内容文章内容</p>
			</section>
</article>

 效果如下: 

 aside 标签定义页面主区域内容之外的内容(比如侧边栏)

<ul>
    <aside>
			<span>这是菜单</span> 
	</aside>
	<aside>
			<span>这是菜单</span> 
	</aside>
	<aside>
			<span>这是菜单</span> 
	</aside>
</ul>

 

                     aside是主区域内容之外的内容

figure 标签规定独立的流内容(图像、图表、照片、代码等等)
figcaption 标签定义figure元素的标题

<figure>
	 	<figcaption>我的相册</figcaption>
	 	<img src="../imgs/veer-352390696.jpg" style="width: 150px;height: 100px;"/>
	 	<img src="../imgs/veer-352390696.jpg" style="width: 150px;height: 100px;"/>
	 	<img src="../imgs/veer-352390696.jpg" style="width: 150px;height: 100px;"/>
</figure>

         以上这些语义元素都是块级元素 

 1.2HTML新增的元素

 details 用于描述文档或文档某个部分的细节
 summary 设置details元素的标题

<details open="open">
	 	<summary>我是details元素的标题</summary>
	 	<p>内容</p>
</details>

 目前,只有 Chrome 和 Safari 6 支持 details 标签。

 details 标签规定了用户可见的或者隐藏的需求的补充细节 

dialog 元素定义对话框,比如提示框 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function testdialog(){
			var open=document.getElementById("dialog1").open;
			if(open){
				document.getElementById("dialog1").open="";
			}else{
				document.getElementById("dialog1").open="open";
			    }
		    }	
		</script>
	</head>
	<body>
		<input type="button" value="测试对话框dialog" onclick="testdialog();"/>
		<dialog id="dialog1">这是一个html5提供的对话框元素</dialog>
	</body>
</html>

 出现按钮后点击一下会跳出对话框

 再次点击按钮对话框会消失

mark元素定义带有记号的文本

<h4>小明有一双<mark>黄底</mark>的鞋</h4>

 可以看到mark标签只有改变文字背景的作用

meter 定义度量衡 仅用于已知最大和最小值的度量

<meter value="3" min="1" max="10"></meter>

value 表示当前进度  max 最大值 min 最小值

progress 定义任何类型的任务的进度

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function testprogress(){
				var pro1=document.getElementById("pro1");
				var i=0;
				window.setInterval(function(){
					pro1.value=i;
					i++;
				},300);
			}
		</script>
	</head>
	<body>
		<input type="button" value="测试进度" onclick="testprogress();"/>
		<progress id="pro1" value="0" max="100"></progress>
	</body>
</html>

 

 value 表示当前进度  max 最大值

2.html5新增的表单元素

datalist 定义为 input 元素输入控件的预定义选项

用户会在他们输入数据时看到预定义选项的下拉列表 

<input list="mylist" name="myTestdatalist"/>
            下拉列表 
        <datalist id="mylist">
			<option value="111">
			<option value="222">
			<option value="333">
			<option value="444">
			<option value="555">
		</datalist><br>

颜色

<input type="color" name="mycolor" />

时间

<input type="time" name="mydate" />
<input type="week" name="testweek">
<input type="month" name="bdaymonth">
<input type="date" name="mydate" />
<input type="datetime" name="mydatetime" />
<input type="datetime-local" name="mydatetime" />

  email【在提交表单时,会自动验证 email 域的值是否合法有效】

<input type="email" name="myemail" />


 value 规定输入字段的默认值

<input type="number" name="testnumber" value="2">

  url 在提交表单时,会自动验证 url 域的值 

  search 类似于搜索域

<input type="url" name="testurl">
<input type="search" name="testsearch">

3.HTML5 新增的表单属性

autocomplete 属性规定 form 或 input 域应该拥有自动完成功能

novalidate 属性规定在提交表单时不应该验证 form 或 input 域。

formnovalidate 属性规定在提交表单时不应该验证 form 或 input 域。

form 属性规定input元素所属的一个或多个表单

autofocus 在页面加载时,input元素自动地获得焦点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<form id="myform" formaction="test" autocomplete="on" novalidate>
			name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<input type="text" name="myname" autocomplete="off"autofocus><br>
			email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<input type="email" name="myemail"><br>
        </form>
			password&nbsp;&nbsp;&nbsp;<input type="password" name="mypassword" 
            form="myform">
			<input type="submit"form="myform"value="提交">
	</body>
</html>

可以看到 form属性把未在表单中的元素包裹进表单中

HTML 5 新元素代替旧元素
formtarget 属性代替了 form 元素的 target 属性。

formenctype 属性代替 form 元素的 enctype 属性。

formmethod 属性代替了 form 元素的 method 属性。

formnovalidate 属性代替了 form 元素的 novalidate 属性。

list 属性设置在input元素上,关联datalist元素这个预定义下拉列表 

<input list="mylist" name="myTestdatalist"/>
		<datalist id="mylist">
			<option value="111">
			<option value="222">
			<option value="333">
			<option value="444">
			<option value="555">
		</datalist>

list属性规定输入域的 datalist。datalist 是输入域的选项列表。  

multiple 规定<input> 元素中可选择多个值 

<input type="file" name="img" multiple><br>
		  <select multiple>
			  <option value="111">111</option>
			  <option value="222">222</option>
			  <option value="333">333</option>
			  <option value="444">444</option>
		  </select> 

 效果如下,页面上似乎没有太大差别

点击浏览 

 选择一个文件后,可以按住Ctrl 键再选择其他的文件,如图选择了三个文件。

placeholder 属性提供一种提示(hint),描述输入域所期待的值 

<input type="text" name="username" placeholder="请输入账号"/>

 required 规定必须在提交之前填写输入域(不能为空)

<form action="login">
			<input type="text" name="username"  placeholder="请输入账号" required /><br>
			<input type="password" name="password" placeholder="请输入密码" required /><br>
			<input type="submit" value="提交" />
</form>

未填内容直接点击提交 

 一般用于必填内容框

 4.HTML5 Video(视频)

HTML5 规定了一种通过 video 元素来包含视频的标准方法。

video 视频窗口

width/height 属性设置视频窗口初始化大小

controls 属性设置视频播放的控制器

source 子元素设置被播放的资源

source 子元素可以在video中出现多个,从第一个可被识别的视频开始播放

src 属性设置资源路径【绝对路径.相对.网络地址】

type 设置被播放资源的类型

video元素支持三种视频格式: MP4, WebM, 和 Ogg。 

 4.1 controls 属性设置视频播放的控制器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>controls属性</title>
	</head>
	<body>
		<video controls="controls">
					<source src="res/movie.mp4" type="video/mp4"></source>
					<source src="res/movie.mp4" type="video/mp4"></source>
		</video>
	</body>
</html>

 

4.2使用JavaScript的Dom对象控制视频播放 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js视频播放/暂停</title>
	</head>
	<body>
		<input type="button" value="播放/暂停" onclick="playPause();"/>
				<input type="button" value="放大" onclick="makeBig();"/>
				<input type="button" value="缩小" onclick="makeSmall();"/>
				<input type="button" value="普通" onclick="makeNormal();"/>
				<br>
				<video id="video1">
					<source src="res/movie.mp4" type="video/mp4"></source>
				</video>
				<script>
					//得到的视频对象
					var video1obj=document.getElementById("video1");
					//播放/暂停
					function playPause(){
						//判断视频是否暂停如果paused值为true表示当前是暂停状态
						if(video1obj.paused){
							//play()播放视频
							video1obj.play();
						}else{
							//pause()暂停播放
							video1obj.pause();
						}
					}
					//放大
					function  makeBig(){
						video1obj.width="500";
					}
					//缩小
					function  makeSmall(){
						video1obj.width="200";
					}
					//普通
					function  makeNormal(){
						video1obj.width="350";
					}
				</script>
	</body>
</html>

4.3 HTML5 Audio(音频) 播放

HTML5 规定了在网页上嵌入音频元素的标准,即使用audio元素。

controls 设置控制器

source 子元素表示被播放的音频资源

src 音频资源路径

type 文件类型

autoplay 设置自动播放

loop 设置循环播放

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>音频播放暂停</title>
	</head>
	<body>
		<audio controls="controls" autoplay="autoplay" loop="loop">
					<source src="res/zijinghuayuan.mp3" type="audio/mp3"></source>
		</audio>
	</body>
</html>

 

5 HTML5 Web 存储 

HTML5可以在本地存储用户的网页数据

在没有Web 存储之前网页数据本地存储使用cookie完成

cookie浏览器自带的存储空间,每一个cookie可以存4k

cookie本地存储不安全

HTML5 Web 存储有2中方式 localStorage 和 sessionStorage

5.1 localStorage存储数据

localStorage有两种方式:
1.localStorage.变量名称="数据值"; 获取保存的数据值:localStorage.变量名称;
2.localStorage.setItem("名称","数据值"); 获取保存的数据值:localStorage.getItem("名称");

手动删除localStorage对象中存储的数据:
localStorage.removeItem("名称");删除指定的数据
localStorage.clear(); 删除所有数据

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>登录</title>
  <script>
    function mylogin() {
      // 获取用户名的输入框对象
      var usernameObj = document.getElementById("username");
      // 获取密码的输入框对象
      var psdObj = document.getElementById("psd");
      // 获取显示错误提示信息的span对象
      var errorObj = document.getElementById("error");
      // 获取用户输入的用户名和密码
      var username = usernameObj.value;
      var psd = psdObj.value;
      // 判断用户名密码是否正确(假设用户名正确为张三,密码为123456)
      if (username == "张三" && psd == "123456") {
        // 判断浏览器是否支持web存储
        if (typeof (Storage) !== "undefined") {
          localStorage.myname = username;
        } else {
          alert("不支持localStorage")
        }
        window.location.href = "lianxi3-2.html";
      } else {
        // 用户名密码错误时:给span元素中写入一段提示文字
        errorObj.innerHTML = "用户名密码有误,请重新输入";
      }
    }
  </script>
</head>

<body>
  <span id="error"></span><br>
  <input type="text" id="username" placeholder="请输入用户名"><br>
  <input type="password" id="psd" placeholder="请输入密码"><br>
  <button id="btn" onclick="mylogin();">登录</button>
</body>

</html>

上述script元素中引入的lianxi3-2.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>登陆成功</title>
		<script>
			window.onload=function(){
				var hobj=document.getElementById("h1");
				if(typeof(Storage)!=="undefined") {
					//获取保存的数据值--localStorage
					//1.localStorage.变量名称; 
					//var myval=localStorage.myname;
					//2.获取保存的数据值:localStorage.getItem("名称");
					var myval=localStorage.getItem("myname");
					hobj.innerHTML=myval+",登陆成功";
				 } else { 
					alert("不支持,localStorage");
				}
			}
			function myexit(){
				if(typeof(Storage)!=="undefined") {
					//localStorage.removeItem("名称");删除指定的数据
					//localStorage.removeItem("myname");
					//localStorage.clear(); 删除所有数据
					localStorage.clear();
					window.location.href="lianxi3-2.html";
				 } else { 
					alert("不支持,localStorage");
				}
			}
		</script>
	</head>
	<body>
		<h1 id="h1">登陆成功</h1>
		<input type="button" value="退出" onclick="myexit();"/>
	</body>
</html>

效果如下

使用设置的 名称 密码登录后

localStorage.getItem("myname");会保存数据上传到web浏览器上

 点击退出后

localStorage.clear();会删除所有数据

 如上图所示,null为空。

5.2.sessionStorage存储数据

sessionStorage有两种方式:
1.sessionStorage.变量名称="数据值"; 获取保存的数据值:sessionStorage.变量名称;
2.sessionStorage.setItem("名称","数据值"); 获取保存的数据值:sessionStorage.getItem("名称");

手动删除sessionStorage对象中存储的数据:
sessionStorage.removeItem("名称");删除指定的数据
sessionStorage.clear(); 删除所有数据

注意:sessionStorage对象管理浏览器窗口之后之前保存的数据会自动清空

 6 数据类型

 6.1 数字加"字符串"等于"字符串"

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>数据类型</title>
		<script>
			window.onload=function(){
				var num=100;
				var num2="100";
				alert(num+num2);
			}
		</script>
	</head>
	<body>
	</body>
</html>

 6.2数字加数字等于数字

<script>
			window.onload=function(){
				var num=100;
				var num2=100;
				alert(num+num2);
	      }
</script>

 

 6.3"字符串"加"字符串"等于"字符串" 

<script>
			window.onload=function(){
				var num="200";
				var num2="100";
				alert(num+num2);
		}
</script>

7 HTML5 Canvas 

Canvas 就是在html中开辟出来的绘制图形的空间【画布】

通过style来设置一些样式

通过javascript在canvas画布上绘制图形

 7.1 绘制矩形

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>HTML5 Canvas</title>
		<script>
			//绘制矩形
			function setRect(){
				//得到画布对象canvas对象
				var canvasobj=document.getElementById("canvas1");
				//创建 context 对象--画笔
				var con=canvasobj.getContext("2d");
				//设置画笔颜色
				con.fillStyle="#f40";
				//开始绘制矩形
				//fillRect(x,y,w,h);
				con.fillRect(10,10,100,50);
			}
		</script>
	</head>
	<body>
		<input type="button" value="绘制矩形" onclick="setRect();"/><br>
		<canvas id="canvas1" style="width: 300px; height: 300px; border: 3px solid #f40;"></canvas>
	</body>
</html>

 7.2 绘制椭圆

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>HTML5 Canvas</title>
		<script>
		function setarc(){
						//得到画布对象canvas对象
						var canvasobj=document.getElementById("canvas1");
						//创建 context 对象--画笔
						var con=canvasobj.getContext("2d");
						con.beginPath();
						con.arc(150,75,20*Math.PI,20,20*Math.PI);
						con.stroke();
					}
		</script>
	</head>
	<body>
		<input type="button" value="绘制圆型" onclick="setarc();"/><br>
		<canvas id="canvas1" style="width: 300px; height: 300px; border: 3px solid #f40;"></canvas>
	</body>
</html>


版权声明:本文为Suxiaomowang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。