HTML学习笔记(4)

一、HTML5

1.HTML5简介

  1. HTML5 是最新的 HTML 标准。
  2. 是专门为承载丰富的 web 内容而设计的,并且无需额外插件。
  3. 拥有新的语义、图形以及多媒体元素。
  4. HTML5 提供的新元素和新的 API 简化了 web 应用程序的搭建。
  5. HTML5 是跨平台的,被设计为在不同类型的硬件(PC、平板、手机、电视机等等)之上运行。
  6. 声明方法:
    HTML5 中默认的字符编码是 UTF-8。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
</head>

<body>
......
</body>

</html>
(1)HTML5 - 新特性

HTML5 的一些最有趣的新特性:

  1. 新的语义元素,比如 <header>, <footer>, <article>, and <section>
  2. 新的表单控件,比如数字、日期、时间、日历和滑块。
  3. 强大的图像支持(借由 <canvas><svg>
  4. 强大的多媒体支持(借由 <video><audio>
  5. 强大的新 API,比如用本地存储取代 cookie。
(2) HTML5 - 被删元素

以下 HTML 4.01 元素已从 HTML5 中删除:

<acronym>
<applet>
<basefont>
<big>
<center>
<dir>
<font>
<frame>
<frameset>
<noframes>
<strike>
<tt>
(3)HTML5-支持
  1. 所有现代浏览器都支持 HTML5。

  2. 此外,所有浏览器,不论新旧,都会自动把未识别元素当做行内元素来处理。

  3. HTML5 定义了八个新的语义 HTML 元素。所有都是块级元素。

    您可以把 CSS display 属性设置为 block,以确保老式浏览器中正确的行为:

header, section, footer, aside, nav, main, article, figure {
    display: block; 
}

2.HTML5 新元素

(1)新的语义/结构元素
  • HTML5 提供了定义页面不同部分的新语义元素.
  • 许多网站包含了指示导航、页眉以及页脚的 HTML 代码,例如这些:<div id="nav"> <div class="header"> <div id="footer">

什么是语义元素?

  1. 语义元素清楚地向浏览器和开发者描述其意义。
  2. 非语义元素的例子:<div><span> 无法提供关于其内容的信息。
  3. 语义元素的例子:<form><table> 以及 <img> 清晰地定义其内容。

HTML5 提供了定义页面不同部分的新语义元素:

在这里插入图片描述

标签描述
<article>定义文档内的文章。
<aside>定义页面内容之外的内容。
<bdi>定义与其他文本不同的文本方向。
<details>定义用户可查看或隐藏的额外细节。
<dialog>定义对话框或窗口。
<figcaption>定义 <figure> 元素的标题。
<figure>定义自包含内容,比如图示、图表、照片、代码清单等等。
<footer>定义文档或节的页脚。
<header>定义文档或节的页眉。
<main>定义文档的主内容。
<mark>定义重要或强调的内容。
<menuitem>定义用户能够从弹出菜单调用的命令/菜单项目。
<meter>定义已知范围(尺度)内的标量测量。
<nav>定义文档内的导航链接。
<progress>定义任务进度。
<rp>定义在不支持 ruby 注释的浏览器中显示什么。
<rt>定义关于字符的解释/发音(用于东亚字体)。
<ruby>定义 ruby 注释(用于东亚字体)。
<section>定义文档中的节。
<summary>定义 <details> 元素的可见标题。
<time>定义日期/时间。
<wbr>定义可能的折行(line-break)。

代码:

<!DOCTYPE html>
<html>
<body>

<section>
<h1>1.section</h1>
<p>section元素定义文档中的节。</p>
<p>节(section)是有主题的内容组,通常具有标题。</p>
<p>可以将网站首页划分为简介、内容、联系信息等节。</p>
</section>
<br>
<section>
<h1>第二节</h1>
<header>
<h1>header页眉</h1>
</header>
<p>balabala</p>

</section>

<hr/>
<article>
<header>
<h1>2.header</h1>
<p>我是页眉:header元素为文档或节规定页眉。</p>
<p>被用作介绍性内容的容器。</p>
<p>一个文档中可以有多个。</p>
</header>
<h1>3.article元素</h1>
  <p>article元素规定独立的自包含内容。文档有其自身的意义,并且可以独立于网站其他内容进

行阅读。</p>
<p>应用场景:论坛、博客、新闻。</p>

</article>
<hr/>
<h1>4.footer</h1>
<footer>
<p>footer元素为文档或节规定页脚。</p>
<p>应该提供有关其包含元素的信息。页脚通常包含文档的作者、版权信息、使用条款链接、联系信

息等等。
<p>可以在一个文档中使用多个。</p>
<p>Contact information: <a href="mailto:someone@example.com">
  someone@example.com</a>.</p>
</footer>

<hr/>
<h1>5.nav</h1>

<nav>
<a href="/html/">HTML</a> |
<a href="/css/">CSS</a> |
<a href="/js/">JavaScript</a> |
<a href="/jquery/">jQuery</a>
</nav>

<p>nav元素定义导航链接集合。旨在定义大型的导航链接块。</p>
<p>并非文档中所有链接都应该位于 nav元素中!</p>

<hr>
<h1>6.aside</h1>
<aside>
<h4>aside</h4>
<p>定义页面主内容之外的某些内容(比如侧栏)。

aside 内容应该与周围内容相关。</p>
</aside>


<hr>
<h1>7.figure和figcaption元素</h1>
<p>在书籍和报纸中,标题与图片搭配的标题很常见。</p>
<p>标题(caption)的作用是为图片添加可见的解释。</p>
<p>通过 HTML5,图片和标题能够被组合在 figure 元素中:<img> 元素定义图像,<figcaption> 

元素定义标题。</p>

<figure>
  <img src="img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228">
  <figcaption>Fig.1 - 这里用figcaption.</figcaption>
</figure>


</body>
</html>

在这里插入图片描述在这里插入图片描述在这里插入图片描述
<article> <section><div> 之间的差异:

  1. 在 HTML5 标准中,<section> 元素被定位为相关元素的块。
  2. <article> 元素被定义为相关元素的完整的自包含块。
  3. <div> 元素被定义为子元素的块。
  4. 举例:<article> 中的 <article><article> 中的 <div><article> 中的 <section> 中的 <div>

如需完整的HTML5 语义参考,请访问HTML 语义参考手册

(2)新的表单元素
标签描述
<datalist>定义输入控件的预定义选项。
<keygen>定义键对生成器字段(用于表单)。
<output>定义计算结果。
(3)新的输入类型

在这里插入图片描述

(4)新的属性语法

HTML5 允许四种不同的属性语法。

该例演示 <input> 标签中使用的不同语法:
在这里插入图片描述

(5)HTML5 图像
标签描述
<canvas>定义使用 JavaScript 的图像绘制。
<svg>定义使用 SVG 的图像绘制。
(6)新的媒介元素
标签描述
<audio>定义声音或音乐内容。
<embed>定义外部应用程序的容器(比如插件)。
<source>定义 <video><audio> 的来源。
<track>定义 <video><audio> 的轨道。
<video>定义视频或影片内容。

3.HTML5 样式指南和代码约定

  1. 属性值加引号
  2. 请始终对图像使用 alt 属性。当图像无法显示时该属性很重要。
<img src="html5.gif" alt="HTML5" style="width:128px;height:128px">
  1. 请始终定义图像尺寸。这样做会减少闪烁,因为浏览器会在图像加载之前为图像预留空间。
<img src="html5.gif" alt="HTML5" style="width:128px;height:128px">
  1. 请尽量避免代码行超过 80 个字符。

  2. 请勿毫无理由地增加空行。
    为了提高可读性,请增加空行来分隔大型或逻辑代码块。
    为了提高可读性,请增加两个空格的缩进。请勿使用 TAB。
    请勿使用没有必要的空行和缩进。没有必要在短的和相关项目之间使用空行,也没有必要缩进每个元素。

  3. 元数据<title> 元素在 HTML5 中是必需的。请尽可能制作有意义的标题。

  4. 短注释应该在单行中书写,并在 <!-- 之后增加一个空格,在 <!-- 之前增加一个空格:

<!-- This is a comment -->

长注释,跨越多行,应该通过 <!----> 在独立的行中书写:

<!-- 
  This is a long comment example. This is a long comment example. This is a long comment example.
  This is a long comment example. This is a long comment example. This is a long comment example.
-->

长注释更易观察,如果它们被缩进两个空格的话。

  1. 样式表

请使用简单的语法来链接样式表(type 属性不是必需的):

<link rel="stylesheet" href="styles.css">

短规则可以压缩为一行,就像这样:

p.into {font-family:"Verdana"; font-size:16em;}

长规则应该分为多行:

body {
  background-color: lightgrey;
  font-family: "Arial Black", Helvetica, sans-serif;
  font-size: 16em;
  color: black;
}
开括号与选择器位于同一行
在开括号之前用一个空格
使用两个字符的缩进
在每个属性与其值之间使用冒号加一个空格
在每个逗号或分号之后使用空格
在每个属性值对(包括最后一个)之后使用分号
只在值包含空格时使用引号来包围值
把闭括号放在新的一行,之前不用空格
避免每行超过 80 个字符

注释:在逗号或分号之后添加空格,是所有书写类型的通用规则。

  1. 在 HTML 中加载 JavaScript

请使用简单的语法来加载外部脚本(type 属性不是必需的):

<script src="myscript.js">

4.画布Canvas

canvas 元素用于在网页上绘制图形。
canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成。
画布是一个矩形区域,可以控制其每一像素。拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

(1)创建画布:

规定元素的 id、宽度和高度:


<canvas id="myCanvas" width="200" height="100"
style="border:1px solid #000000;">
<!-- solid边框颜色 -->
</canvas>

通过 JavaScript 来绘制:

<script type="text/javascript">
var c=document.getElementById("myCanvas");<!-- JavaScript 使用 id 来寻找 canvas 元素  -->

var cxt=c.getContext("2d");//创建 context 对象

cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
//在画布上绘制 150x75 的矩形,从左上角开始 (0,0)。
// fillStyle 方法将其染成红色,fillRect 方法规定了形状、位置和尺寸。
</script>
(2)Canvas - 路径

在Canvas上画线,我们将使用以下两种方法:

moveTo(x,y) 定义线条开始坐标
lineTo(x,y) 定义线条结束坐标

绘制线条我们必须使用到 “ink” 的方法,就像stroke()或者 fill()…


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();

在这里插入图片描述在canvas中绘制圆形, 我们将使用以下方法:

arc(x,y,r,start,stop)

<script>

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();

</script> 
(3)Canvas - 文本

使用 canvas 绘制文本,重要的属性和方法如下:

font - 定义字体
fillText(text,x,y) - 在 canvas 上绘制实心的文本
strokeText(text,x,y) - 在 canvas 上绘制空心的文本

使用 fillText():
使用 “Arial” 字体在画布上绘制一个高 30px 的文字(实心和空心):

<script>

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello World",10,50);
ctx.strokeText("Hello World",10,150);

</script>

在这里插入图片描述

(4)Canvas - 渐变

以下有两种不同的方式来设置Canvas渐变:

createLinearGradient(x,y,x1,y1) - 创建线条渐变
createRadialGradient(x,y,r,x1,y1,r1) - 创建一个径向/圆渐变

当我们使用渐变对象,必须使用两种或两种以上的停止颜色。

addColorStop()方法指定颜色停止,参数使用坐标来描述,可以是0至1.

使用渐变,设置fillStylestrokeStyle的值为 渐变,然后绘制形状,如矩形,文本,或一条线。
使用 createLinearGradient():

1.创建一个线性渐变。使用渐变填充矩形:

<script>

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");

// Create gradient
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");

// Fill with gradient
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);//被填充的矩形

</script>

在这里插入图片描述

2.创建一个径向/圆渐变。使用渐变填充矩形:

var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");

在这里插入图片描述

(5)Canvas - 图像

把一幅图像放置到画布上, 使用以下方法:

drawImage(image,x,y)
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
</head>
<body>

<p>正常显示图像:</p>
<img id="scream" src="img_the_scream.jpg" alt="The Scream" width="220" height="277"><p>Canvas中显示:</p>
<canvas id="myCanvas" width="250" height="300" style="border:1px solid red;">
您的浏览器不支持 HTML5 canvas 标签。</canvas>

<script>

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");

img.onload = function() {
	ctx.drawImage(img,10,10);
} 
</script>

</body>
</html>

在这里插入图片描述
在这里插入图片描述

更多属性参考,请访问HTML5 参考手册

(6).HTML5 内联 SVG

HTML5 支持内联 SVG。
什么是SVG?

  1. SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
  2. SVG 用于定义用于网络的基于矢量的图形
  3. SVG 使用XML 格式定义图形
  4. SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失
  5. SVG 是万维网联盟的标准

SVG优势

与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于:

  1. SVG 图像可通过文本编辑器来创建和修改
  2. SVG 图像可被搜索、索引、脚本化或压缩
  3. SVG 是可伸缩的
  4. SVG 图像可在任何的分辨率下被高质量地打印
  5. SVG 可在图像质量不下降的情况下被放大

浏览器支持

Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 支持内联SVG。

在 HTML5 中,您能够将 SVG 元素直接嵌入 HTML 页面中:`

<!DOCTYPE html>
<html>
<body>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">
   <polygon points="100,10 40,180 190,60 10,60 160,180"
   style="fill:red;stroke:blue;stroke-width:3;fill-rule:evenodd;" />
</svg>
 
</body>
</html>

SVG 与 Canvas两者间的区别

SVG 是一种使用 XML 描述 2D 图形的语言。

Canvas 通过 JavaScript 来绘制 2D 图形。

SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。

在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

Canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

在这里插入图片描述

5.API

(1)拖放

图片可以在两个方框内来回拖动

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"> 
<style type="text/css">
#div1, #div2
{float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;}
</style>
<script>
function allowDrop(ev)
{
	ev.preventDefault();
}

function drag(ev)//当元素被拖动时,会发生什么
{
	ev.dataTransfer.setData("Text",ev.target.id);
    	//dataTransfer.setData() 方法设置被拖数据的数据类型和值
}

function drop(ev)//当放置被拖数据时,会发生 drop 事件。
{
	ev.preventDefault();
	  /*默认无法将数据/元素放置到其他元素中。需要设置允许放置,我们必须阻止对元素的

默认处理方式。 
	  调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链

接形式打开)*/
	
	var data=ev.dataTransfer.getData("Text");
	    //获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
	ev.target.appendChild(document.getElementById(data));
	   //被拖数据是被拖元素的 id ("drag1").把被拖元素追加到放置元素(目标元素)中
}
</script>
</head>
<body>

<p>拖动 RUNOOB.COM 图片到矩形框中:</p>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<!-- 当放置被拖数据时,会发生 drop 事件。ondrop 属性调用了函数drop(event).
     ondragover 事件规定在何处放置被拖动的数据,调用 ondragover 事件的 

event.preventDefault() 方法阻止对元素的默认处理方式。 
-->
	<br>
<img id="drag1" src="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/pictures/1.png" 
draggable="true" ondragstart="drag(event)" 
width="88" height="31"></div>
<!-- draggable设置元素为可拖放.
     ondragstart 属性调用了函数drag(event),它规定了被拖动的数据。
-->	

<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<hr>




</body>
</html>

在这里插入图片描述

(2).HTML5 Geolocation(地理定位)
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
</head>
<body>
<p id="demo">点击按钮获取您当前坐标(可能需要比较长的时间获取):</p>
<button onclick="getLocation()">点我</button>
<script>
var x=document.getElementById("demo");
function getLocation()
{
	if (navigator.geolocation)
	{
		navigator.geolocation.getCurrentPosition(showPosition,showError);
	}
	else
	{
		x.innerHTML="该浏览器不支持获取地理位置。";
	}
}

function showPosition(position)
{
	x.innerHTML="纬度: " + position.coords.latitude + 
	"<br>经度: " + position.coords.longitude;	
}

/*检测是否支持地理定位
    如果支持,则运行 getCurrentPosition() 方法。如果不支持,则向用户显示一段消息。
    如果 getCurrentPosition() 运行成功,则向参数showPosition中规定的函数返回 coordinates 对象
    showPosition() 函数获得并显示经度,纬度,error
*/

function showError(error)
{
	switch(error.code) 
	{
		case error.PERMISSION_DENIED:
			x.innerHTML="用户拒绝对获取地理位置的请求。"
			break;
		case error.POSITION_UNAVAILABLE:
			x.innerHTML="位置信息不可用/无法获取位置信息。"
			break;
		case error.TIMEOUT:
			x.innerHTML="请求用户地理位置超时。"
			break;
		case error.UNKNOWN_ERROR:
			x.innerHTML="未知错误。"
			break;
	}
}


</script>
</body>
</html>

在这里插入图片描述

(3)本地储存(Web 存储)

什么是 HTML5 Web 存储?

使用HTML5可以在本地存储用户的浏览数据。

早些时候,本地存储使用的是 cookie。但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以存储大量的数据,而不影响网站的性能.

数据以 键/值 对存在, web网页的数据只允许该网页访问使用。

浏览器支持

Internet Explorer 8+, Firefox, Opera, Chrome, 和 Safari支持Web 存储。

注意: Internet Explorer 7 及更早IE版本不支持web 存储.

localStorage 和 sessionStorage

客户端存储数据的两个对象为:

localStorage - 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
sessionStorage - 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

在使用 web 存储前,应检查浏览器是否支持localStorage 和sessionStorage:


if(typeof(Storage)!=="undefined")
{
    // 是的! 支持 localStorage  sessionStorage 对象!
    // 一些代码.....
} else {
    // 抱歉! 不支持 web 存储。
}

localStorage和 sessionStorage,可使用的API相同,常用的有如下几个(以localStorage为例):
保存数据:localStorage.setItem(key,value);
读取数据:localStorage.getItem(key);
删除单个数据:localStorage.removeItem(key);
删除所有数据:localStorage.clear();
得到某个索引的key:localStorage.key(index);

提示: 键/值对通常以字符串存储,你可以按自己的需要转换该格式。

记录用户点击按钮的次数:

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8">  

<script>
    function clickCounter1()
    {
        if(typeof(Storage)!=="undefined")
        {
            if (localStorage.clickcount)
            {
                localStorage.clickcount=Number(localStorage.clickcount)+1;
            }
            else
            {
                localStorage.clickcount=1;
            }
            document.getElementById("result1").innerHTML=" 你已经点击了按钮 " + localStorage.clickcount + " 次 ";
        
        }
        else
        {
            document.getElementById("result1").innerHTML="对不起,您的浏览器不支持 web 存储。";
        }
    }

    function clickCounter2()
    {
        if(typeof(Storage)!=="undefined")
        {
            if (sessionStorage.clickcount)
            {
                sessionStorage.clickcount=Number(sessionStorage.clickcount)+1;
            }
            else
            {
                sessionStorage.clickcount=1;
            }
            document.getElementById("result2").innerHTML=" 你已经点击了按钮 " + sessionStorage.clickcount + " 次 ";
        
        }
        else
        {
            document.getElementById("result2").innerHTML="对不起,您的浏览器不支持 web 存储。";
        }
    }
    </script>
</head>
<body>
<h4>1.创建和移除Storage值</h4>

<div id="result"></div>
<script>
if(typeof(Storage)!=="undefined")
{
  localStorage.sitename="巴拉巴拉";//使用 key="sitename" 和 value="菜鸟教程" 创建一个 localStorage 键/值对。
  document.getElementById("result").innerHTML="网站名:" + localStorage.sitename;
          //检索键值为"sitename" 的值然后将数据插入 id="result"的元素中。
}
else
{
  document.getElementById("result").innerHTML="对不起,您的浏览器不支持 web 存储。";
}

localStorage.removeItem("sitename");//移除 localStorage 中的 "sitename" 

</script>

<h4>2.用户点击按钮的次数-localStorage</h4>
<p><button onclick="clickCounter1()" type="button">点我!</button></p>
<div id="result1"></div>
    <!-- -->
<p>点击该按钮查看计数器的增加。</p>
<p>关闭浏览器选项卡(或窗口),重新打开此页面,计数器将继续计数(不是重置)。</p>
<hr>

<h4>3.用户点击按钮的次数-sessionStorage</h4>
<p><button onclick="clickCounter2()" type="button">再点我!</button></p>
<div id="result2"></div>
    <!-- -->
<p>点击该按钮查看计数器的增加。</p>
<p>关闭浏览器选项卡(或窗口),重新打开此页面,计数器将重置。</p>

</body>
</html>

在这里插入图片描述

网站记录:

<!DOCTYPE html>
<html>  
<head>  
    <meta charset="utf-8">  
    <title>HTML5本地存储之Web Storage篇</title>  
</head>  
<body>  
    <div style="border: 2px dashed #ccc;width:320px;text-align:center;">     
        <label for="sitename">网站名(key):</label>  
        <input type="text" id="sitename" name="sitename" class="text"/>  
        <br/>  
        <label for="siteurl">网 址(value):</label>  
        <input type="text" id="siteurl" name="siteurl"/>  
        <br/>  
        <input type="button" onclick="save()" value="新增记录"/>  
        <hr/>  
        <label for="search_phone">输入网站名:</label>  
        <input type="text" id="search_site" name="search_site"/>  
        <input type="button" onclick="find()" value="查找网站"/> 
        <input type="button" onclick="dele()" value="删除网站"/> 
        <p id="find_result"><br/></p> 
      
        
        


    </div>  
    <br/>  
    <div id="list">  
    </div>  
    <script>
	// 载入所有存储在localStorage的数据
	loadAll(); 	
		
    //保存数据  
    function save(){  
        var siteurl = document.getElementById("siteurl").value;  
        var sitename = document.getElementById("sitename").value;  
        localStorage.setItem(sitename, siteurl);
        alert("添加成功");
    }
    //查找数据  
    function find(){  
        var search_site = document.getElementById("search_site").value;  
        var siteurl = localStorage.getItem(search_site);  
        var find_result = document.getElementById("find_result");  
        find_result.innerHTML = search_site + "的网址是:" + siteurl;  
    }
    //删除数据
    function dele(){  
        var search_site = document.getElementById("search_site").value;  
        var siteurl = localStorage.getItem(search_site);  
        localStorage.removeItem(search_site, siteurl);
        alert("删除成功");
    }
    //将所有存储在localStorage中的对象提取出来,并展现到界面上
    function loadAll(){  
        var list = document.getElementById("list");  
        if(localStorage.length>0){  
            var result = "<table border='1'>";  
            result += "<tr><td>key</td><td>value</td></tr>";  
            for(var i=0;i<localStorage.length;i++){  
                var sitename = localStorage.key(i);  
                var siteurl = localStorage.getItem(sitename);  
                result += "<tr><td>"+sitename+"</td><td>"+siteurl+"</td></tr>";  
            }  
            result += "</table>";  
            list.innerHTML = result;  
        }else{  
            list.innerHTML = "数据为空……";  
        }  
    }      
    </script>
</body>  
</html>

在这里插入图片描述

(4)web SQL

Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。
Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。
核心方法

核心方法:

openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。
transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。
executeSql:这个方法用于执行实际的 SQL 查询。

打开数据库

var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);

openDatabase() 方法对应的五个参数说明:

openDatabase(数据库名称,版本号,描述文本,数据库大小,创建回调) 

第五个参数,创建回调会在创建数据库后被调用。


执行查询操作

执行操作使用 database.transaction() 函数:


var db = openDatabase('mydb', '1.0', 'Test DB', 5 * 1024 * 1024);
db.transaction(function (tx) { 
    //创建名为LOGS的表 
   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
   //插入数据
   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "第一条数据")');
   //插入数据
   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "第二条数据")');
   //动态值插入数据
tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?)', [e_id, e_log]);
/*实例中的 e_id 和 e_log 是外部变量,executeSql 会映射数组参数中的每个条目给 "?"。 */
  
   //删除数据
   tx.executeSql('DELETE FROM LOGS  WHERE id=1');
  //动态值删除数据
   tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]);
   
   //更新数据
   tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=2');
  //动态更新数据
   tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=?', [id]);

});


读取数据

db.transaction(function (tx) {
   tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
      var len = results.rows.length, i;
      msg = "<p>查询记录条数: " + len + "</p>";
      document.querySelector('#status').innerHTML +=  msg;
    
      for (i = 0; i < len; i++){
         alert(results.rows.item(i).log );
      }
    
   }, null);
});

<!DOCTYPE HTML>
<html>
   <head>
      <meta charset="UTF-8">  
	   <title>菜鸟教程(runoob.com)</title> 
      <script type="text/javascript">
      
         var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
         var msg;
         
         db.transaction(function (tx) {
            tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
            msg = '<p>数据表已创建,且插入了两条数据。</p>';
            document.querySelector('#status').innerHTML =  msg;
         });

         db.transaction(function (tx) {
              tx.executeSql('DELETE FROM LOGS  WHERE id=1');
              msg = '<p>删除 id 为 1 的记录。</p>';
              document.querySelector('#status').innerHTML =  msg;
         });

         db.transaction(function (tx) {
             tx.executeSql('UPDATE LOGS SET log=\'runoob.com\' WHERE id=2');
              msg = '<p>更新 id 为 2 的记录。</p>';
              document.querySelector('#status').innerHTML =  msg;
         });

         db.transaction(function (tx) {
            tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
               var len = results.rows.length, i;
               msg = "<p>查询记录条数: " + len + "</p>";
               document.querySelector('#status').innerHTML +=  msg;
               
               for (i = 0; i < len; i++){
                  msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
                  document.querySelector('#status').innerHTML +=  msg;
               }
            }, null);
         });
         
      </script>
      
   </head>
   
   <body>
      <div id="status" name="status">状态信息</div>
   </body>
   
</html>

(5)HTML5 应用程序缓存

Cache Manifest
(供离线浏览)

<!DOCTYPE html>
<html manifest="demo_html.appcache">
<head> 
<meta charset="UTF-8">
</head>
<body>
<script src="demo_time.js">
</script>
<p id="timePara"><button onclick="getDateTime()">获取日期和时间</button></p>
<p><img src="logo.png" width="336" height="69"></p>
<p>尝试打开 <a href="tryhtml5_html_manifest.htm" target="_blank">这个页面</a>, 在离线的状态下重新载入这个页面,页面也可以访问。</p>
</body>
</html>

在这里插入图片描述
如需启用应用程序缓存,请在文档的<html> 标签中包含 manifest 属性:

<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>

每个指定了 manifest 的页面在用户对其访问时都会被缓存。如果未指定 manifest 属性,则页面不会被缓存(除非在 manifest 文件中直接指定了该页面)。

manifest 文件的建议的文件扩展名是:".appcache"。

Remark 请注意,manifest 文件需要配置正确的 MIME-type,即 “text/cache-manifest”。必须在 web 服务器上进行配置。


Manifest 文件

manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。

manifest 文件可分为三个部分:

CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存
NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

CACHE MANIFEST

第一行,CACHE MANIFEST,是必需的:

CACHE MANIFEST
/theme.css
/logo.gif
/main.js

上面的 manifest 文件列出了三个资源:一个 CSS 文件,一个 GIF 图像,以及一个 JavaScript 文件。当 manifest 文件加载后,浏览器会从网站的根目录下载这三个文件。然后,无论用户何时与因特网断开连接,这些资源依然是可用的。


NETWORK

下面的 NETWORK 小节规定文件 “login.php” 永远不会被缓存,且离线时是不可用的:

NETWORK:
login.php

可以使用星号来指示所有其他资源/文件都需要因特网连接:

NETWORK:
*
FALLBACK

下面的 FALLBACK 小节规定如果无法建立因特网连接,则用 “offline.html” 替代 /html5/ 目录中的所有文件:

FALLBACK:
/html/ /offline.html

注意: 第一个 URI 是资源,第二个是替补。


更新缓存

一旦应用被缓存,它就会保持缓存直到发生下列情况:

用户清空浏览器缓存
manifest 文件被修改(参阅下面的提示)
由程序来更新应用缓存

完整的 Manifest 文件

CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js

NETWORK:
login.php

FALLBACK:
/html/ /offline.html

Remark提示:以 “#” 开头的是注释行,但也可满足其他用途。应用的缓存会在其 manifest 文件更改时被更新。如果您编辑了一幅图片,或者修改了一个 JavaScript 函数,这些改变都不会被重新缓存。更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。


关于应用程序缓存的说明

请留心缓存的内容。

一旦文件被缓存,则浏览器会继续展示已缓存的版本,即使您修改了服务器上的文件。为了确保浏览器更新缓存,您需要更新 manifest 文件。

注意: 浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。

(6)HTML5 Web Workers

web worker 是运行在后台的 JavaScript,不会影响页面的性能。
什么是 Web Worker?

  1. 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。
  2. web worker 是运行在后台的JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker在后台运行。

浏览器支持

Internet Explorer 10, Firefox, Chrome, Safari 和 Opera 都支持Web workers.


Web Workers 和 DOM

由于 web worker 位于外部文件中,它们无法访问下列 JavaScript 对象:

window 对象
document 对象
parent 对象
(7)HTML5Server-Sent 事件

HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新。

Server-Sent 事件 - 单向消息传递

Server-Sent 事件指的是网页自动获取来自服务器的更新。

以前也可能做到这一点,前提是网页不得不询问是否有可用的更新。通过服务器发送事件,更新能够自动到达。

例子:Facebook/Twitter 更新、股价更新、新的博文、赛事结果等。

浏览器支持

所有主流浏览器均支持服务器发送事件,除了 Internet Explorer。

接收 Server-Sent 事件通知

EventSource 对象用于接收服务器发送事件通知:

<!DOCTYPE html>
<html>
<body>
<h1>获得服务器更新</h1>
<div id="result"></div>

<script>
if(typeof(EventSource)!=="undefined")
  {
  var source=new EventSource("/example/html5/demo_sse.php");
  source.onmessage=function(event)
    {
    document.getElementById("result").innerHTML+=event.data + "<br />";
    };
  }
else
  {
  document.getElementById("result").innerHTML="抱歉,您的浏览器不支持 server-sent 事件 ...";
  }
</script>

</body>
</html>

在这里插入图片描述
在这里插入图片描述

(8)插件
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
</head>
<body>
<h4>1.object 元素</h4>
<p>所有主流浏览器都支持 < object > 标签。ta定义了在 HTML 文档中嵌入的对象。</p>
<p>该标签用于插入对象 (例如在网页中嵌入 Java 小程序, PDF 阅读器, Flash 播放器) </p>

<object width="400" height="50" data="bookmark.swf"></object>
<hr>
 <object width="100%" height="500px" data="C:\Users\Administrator\Desktop\学习study\前端学习\html\workspace\7.1.布局 .html"></object>
<hr>
<object data="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/pictures/1.png"></object>
<hr>
<object height="50" width="100" data="horse.mp3"></object>
<h4>2.embed 元素</h4>
<p>所有主流浏览器都支持 < embed > 标签。表示一个 HTML Embed 对象 。</p>
<p>该元素在 HTML 5 页面上会被验证,在 HTML 4 上不会。</p>
<p>没有关闭标签。 不能使用替代文本。</p>
<embed width="400" height="50" src="bookmark.swf">
<hr>
<embed width="100%" height="500px" src="C:\Users\Administrator\Desktop\学习study\前端学习\html\workspace\7.1.布局 .html">
<hr>
<embed src="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/pictures/1.png">
<hr>
<embed height="50" width="100" src="horse.mp3">
</body>
</html>
(9)音视频

在这里插入图片描述

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
</head>
<body>
<h1>1.音频</h1>
<h4>(1) HTML5 audio 元素</h4>
<audio controls>
  <source src="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/song.mp3" type="audio/mpeg">
  <source src="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/song.ogg" type="audio/ogg">
  您的浏览器不支持该音频格式。
</audio>
<hr>
<h4>(2)embed</h4>
<audio controls>
    <source src="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/song.mp3" type="audio/mpeg">
    <source src="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/song.ogg" type="audio/ogg">
    <embed height="50" width="100" src="horse.mp3">
  </audio>
<hr>
<h4>(3)</h4>
<p><a href="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/song.mp3">点击此处播放</a></p>

<hr>
<h4>(4)雅虎</h4>
<p><a href="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/song.mp3">播放 mp3</a></p>
<p><a href="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/song.wav">播放 wav</a></p>
<p>使用时需要在底部添加一段script代码:</p>
<p>script type="text/javascript" src="http://mediaplayer.yahoo.com/js"</p>
<script type="text/javascript" src="http://mediaplayer.yahoo.com/js"></script>
<hr>
<h1>2.视频</h1>
<h4>(1) HTML5 video元素</h4>
<video width="320" height="240" controls autoplay>
    <source src="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/movie.ogg" type="video/ogg">
    <source src="movie.mp4" type="video/mp4">
    <source src="movie.webm" type="video/webm">
    <object data="movie.mp4" width="320" height="240">
      <embed width="320" height="240" src="movie.swf">
    </object>
  </video>
<hr>
<h4>(2)插件</h4>
<p>< embed >显示 Flash 视频</p>
<embed src="intro.swf" width="200" height="200"><p>如果你无法看到该视频,那么可能你的电脑不支持该文件格式。</p>
<p>< object >显示 Flash 视频</p>
<object height="200" width="200" data="intro.swf"></object>
<hr>
<h4>(3)HTML 5 + object + embed</h4>
<video width="320" height="240" controls autoplay>
    <source src="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/movie.ogg" type="video/ogg">
    <source src="movie.mp4" type="video/mp4">
    <source src="movie.webm" type="video/webm">
    <object data="movie.mp4" width="320" height="240">
      <embed width="320" height="240" src="movie.swf">
    </object>
  </video>

<hr>
<h4>(4)超链接herf</h4>
<a href="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/movie.ogg">播放视频文件</a> 
<hr>
<h4>(5)雅虎</h4>
<p><a href="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/movie.mp4">播放 mp4</a></p>
<p><a href="C:/Users/Administrator/Desktop/学习study/前端学习/html/workspace/yinshipin/movie.ogg">播放 ogg</a></p>
<p>使用时需要在底部添加一段script代码:</p>
<p>script type="text/javascript" src="http://mediaplayer.yahoo.com/js"</p>
<script type="text/javascript" src="http://mediaplayer.yahoo.com/js"></script>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值