html5与css3

 H5侧重移动端;

1.H5并不是新的语言,而是html语言的第五次重大修改--版本;

2.支持:所有的主流浏览器都支持h5.(chrome,firefox,safari。。。)。IE9及以上支持h5(有选择的支持,并不会全部支持),但是ie8及以下不支持h5.

3.改变了用户与文档的交互方式:多媒体:video audio canvas

4.增加了其它的新特性:语义特性,本地存储特性,网页多媒体,二维三维,特效(过渡,动画)

5.相对于h4:
1.进步:抛弃了一些不合理不常用的标记和属性
2.新增了一些标记和属性--表单
3.从代码角度而言,h5的网页结构代码更简洁。

 

 

一:什么是HTML5:

  1. 1、万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改
    支持Html5的浏览器包括Firefox(火狐浏览器),IE9及其更高版本,Chrome(谷歌浏览器),Safari,Opera等;国内的傲游浏览器(Maxthon),以及基于IE或Chromium(Chrome的工程版或称实验版)所推出的360浏览器、搜狗浏览器、QQ浏览器、猎豹浏览器等国产浏览器同样具备支持HTML5的能力
    HTML5的设计目的是为了在移动设备上支持多媒体。新的语法特征被引进以支持这一点,如video、audio和canvas 标记。HTML5还引进了新的功能,可以真正改变用户与文档的交互方式
    增加了新特性:语义特性,本地存储特性,设备兼容特性,连接特性,网页多媒体特性,三维、图形及特效特性,性能与集成特性,CSS3特性
    相比之前的进步:取消了一些过时的HTML4标记,将内容和展示分离,一些全新的表单输入对象,全新的,更合理的Tag,本地数据库,Canvas 对象,浏览器中的真正程序,Html5取代Flash在移动设备的地位
    优点:
    a)        提高可用性和改进用户的友好体验;
    
    b)        有几个新的标签,这将有助于开发人员定义重要的内容;
    
    c)         可以给站点带来更多的多媒体元素(视频和音频);
    
    d)        可以很好的替代FLASH和Silverlight;
    
    e)        当涉及到网站的抓取和索引的时候,对于SEO很友好;
    
    f)         将被大量应用于移动应用程序和游戏;
    
    g)        可移植性好。
    
    缺点:该标准并未能很好的被Pc端浏览器所支持。因新标签的引入,各浏览器之间将缺少一种统一的数据描述格式,造成用户体验不佳。
    未来趋势
    a)       移动优先
    
    b)       游戏开发者领衔“主演”

     

 

二:HTML5中的新增标签

为了更好地处理今天的互联网应用,HTML5添加了很多新元素及功能,比如: 图形的绘制,多媒体内容,更好的页面结构,更好的形式 处理,和几个api拖放元素,定位,包括网页 应用程序缓存,存储,网络工作者,等。

canvas

标签

描述

<canvas>

标签定义图形,比如图表和其他图像。该标签基于 JavaScript 的绘图 API

多媒体

标签

描述

<audio>

定义音频内容

<video>

定义视频(video 或者 movie)

<source>

定义多媒体资源 <video> 和 <audio>  字体

<embed>

定义嵌入的内容,比如插件。

<track>

为诸如 <video> 和 <audio> 元素之类的媒介规定外部文本轨道。

表单

标签

描述

<datalist>

定义选项列表。请与 input 元素配合使用该元素,来定义 input 可能的值。

<keygen>

规定用于表单的密钥对生成器字段。

<output>

定义不同类型的输出,比如脚本的输出。

语义和结构

HTML5提供了新的元素来创建更好的页面结构:

标签

描述

<article>

定义页面的侧边栏内容

<aside>

定义页面内容之外的内容。

<bdi>

允许您设置一段文本,使其脱离其父元素的文本方向设置。

<command>

定义命令按钮,比如单选按钮、复选框或按钮

<details>

用于描述文档或文档某个部分的细节

<dialog>

定义对话框,比如提示框

<summary>

标签包含 details 元素的标题

<figure>

规定独立的流内容(图像、图表、照片、代码等等)。

<figcaption>

定义 <figure> 元素的标题

<footer>

定义 section 或 document 的页脚。

<header>

定义了文档的头部区域

<mark>

定义带有记号的文本。

<meter>

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

<nav>

定义运行中的进度(进程)。

<progress>

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

<ruby>

定义 ruby 注释(中文注音或字符)。

<rt>

定义字符(中文注音或字符)的解释或发音。

<rp>

在 ruby 注释中使用,定义不支持 ruby 元素的浏览器所显示的内容。

<section>

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

<time>

定义日期或时间。

<wbr>

规定在文本中的何处适合添加换行符。

 

 

三HTML中移除的标签:

以下的 HTML 4.01 元素在HTML5中已经被删除:

<acronym> 字体兼容
<applet> java组件
<basefont> 字体
<big>
<center>
<dir> 目录
<font>
<frame>
<frameset>
<noframes>
<strike>

 

 

四:HTML中的语义标签

  1. 1、传统页面的标签使用
    HTML5页面中的标签使用,如:
    <body>
        <header>定义了文档的头部区域</header>
        <div>
            <article>定义页面的侧边栏内容</article>
            <aside>定义页面内容之外的内容</aside>
        </div>
        <footer>定义 section 或 document 的页脚</footer>
    </body>
    
     
    
    五:兼容处理:
    
    在不支持HTML5新标签的浏览器里,会将这些新的标签解析成行内元素(inline)对待,所以我们只需要将其转换成块元素(block)即可使用,但是在IE9版本以下,并不能正常解析这些新标签,
    但是却可以识别通过document.createElement(
    'tagName')创建的自定义标签,于是我们的解决方案就是将HTML5的新标签全部通过document.createElement('tagName')来创建一遍,
    这样IE低版本也能正常解析HTML5新标签了。 处理方式:在实际开发中我们更多采用的是通过检测IE浏览器的版本来加载三方的一个JS库来解决兼容问题(测试在IE下面的兼容性:ieTester软件的使用)
    <script src="../js/html5shiv.min.js"></script>

     

 

六:HTML5中表单新增的标签

  1. <datalist>:与input配合使用:类似于拥有输入功能的下拉列表

 

  1. <keygen>:提供一种验证用户数据的可靠方法。在提交表单数据的时候,会生成两个键,一个私钥,一个公钥。私钥存储在本地,公钥发送到服务器。在需要做验证的时候,我们可以从服务器下载一个客户端证书,通过私钥和证书来实现相关的验证操作。
  2. <meter>:度量器,可用于标示级别

属性

描述

high

number

定义度量的值位于哪个点,被界定为高的值。

low

number

定义度量的值位于哪个点,被界定为低的值。

max

number

定义最大值。默认值是 1。

min

number

定义最小值。默认值是 0。

optimum

number

定义什么样的度量值是最佳的值。

如果该值高于 "high" 属性,则意味着值越高越好。

如果该值低于 "low" 属性的值,则意味着值越低越好。

value

number

定义度量的值。

 

  1. <output>:用于展示内容,只能展示,不能进行编辑

 

七:表单新增的属性

placeholder   占位符
autofocus   获取焦点
multiple   文件上传多选或多个邮箱地址 
autocomplete 自动完成,用于表单元素,也可用于表单自身
    有2个前提:1、必须成功提交过;2、当前添加的元素必须有name属性。 form   指定表单项属于哪个form,处理复杂表单时会需要;(例如上面写了1个form表单,单面也有标签想提交到表单中,可以在里面添加form属性,等于上面表单的id值,就可以一块提交了。) novalidate   关闭验证,可用于
<form>标签 required   验证条件,必填项 pattern   正则表达式 验证表单 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格式, (必须包含http) d) number: 只能输入数字, 可以设置最大值max,最小值min,默认值value e) search: 搜索框; 里面有删除功能 f) range: 范围,可以进行拖动,通过value进行取值; 有max/min/value g) color :拾色器,通过value进行取值 h) time :时间 i) date: 日期 不是绝对的 j) datetime: 时间日期; 现在大多数浏览器不能用,现在苹果saf支持 k) month: 月份 l) week: 星期
      datetime-local 时间日期,支持所有浏览器 说明:部分类型是针对移动设备生效的,且具有一定的兼容性,在实际应用当中可选择性的使用。

 八-九:新增表单元素:

select的使用

keygen (了解,浏览器一般不支持) output(了解,
浏览器一般不支持)



 

九:表单新增的事件:

oninput 用户输入内容时触发,可用于移动端输入字数统计
oninvalid 验证不通过时触发
<script>

    /*oninput可以监听用户的每一次输入*/

    document.getElementById("name").oninput=function(){

        console.log(this.value);

    }

    /*onkeyup监听键盘弹起,每一个键盘弹出触发一次*/

    document.getElementById("name").onkeyup=function(){

        console.log("---"+this.value);

    }

    /*oninvalid当指定表单元素验证不通过时触发*/

    document.getElementById("phone").oninvalid=function(){

        console.log("验证不通过");
     this.setCustomValidity(''); //可以设置默认的提示信息 }
</script>


新增进度条有2种:



 

十:新增表单元素和属性的案例

效果图:

 


 
a 样式CSS

<style>

    *{

        margin: 0;

        padding: 0;

    }

    body{

        max-width:600px;

        margin: 0 auto;

    }

    form{

        width:100%;

    }

    form fieldset{

        padding:20px 20px 10px;

    }

    form fieldset label{

        font-weight:bold;

        line-height:20px;

    }

    form input,

    form meter{

        width:100%;

        margin:10px 0;

        display: block;

        height:30px;

        border: 1px solid #ccc;

        padding-left:5px;

    }

    form meter{

        width:100%;

        border: none;

        padding-left:0;

    }

    .btn{

        width:100%;

        height: 40px;

        margin-top: 20px;

    }

</style>


b) 结构html
<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>IOS</option> <option>andriod</option> <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> <!--通过low/high的值来设置meter的颜色--> <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> 说明: 1.<fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段。当一组表单元素放到 <fieldset> 标签内时,浏览器会以特殊方式来显示它们,它们可能有特殊的边界、3D 效果,
或者甚至可创建一个子表单来处理这些元素。
2. legend 元素为 fieldset 元素定义标题(caption)。

 

 

十一:多媒体

        1.音频播放:audio标签的使用:

a)  属性:

autoplay

autoplay

如果出现该属性,则音频在就绪后马上播放。

controls

controls

如果出现该属性,则向用户显示控件,比如播放按钮。

loop

loop

如果出现该属性,则每当音频结束时重新开始播放。

preload

preload

如果出现该属性,则音频在页面加载时进行加载,并预备播放。

如果使用 "autoplay",则忽略该属性。

src

url

要播放的音频的 URL。

 

b)  示例:播放音频

<audio src="../mp3/See.mp3" controls autoplay></audio>

  // controls音频播放器控制面板;autoplay背景播放;

 

 

2、视频播放:video标签的使用

a)     属性:

autoplay

autoplay

如果出现该属性,则视频在就绪后马上播放。

controls

controls

如果出现该属性,则向用户显示控件,比如播放按钮。

height

pixels

设置视频播放器的高度。

loop

loop

如果出现该属性,则当媒介文件完成播放后再次开始播放。

preload

preload

如果出现该属性,则视频在页面加载时进行加载,并预备播放。

如果使用 "autoplay",则忽略该属性。

src

url

要播放的视频的 URL。

width

pixels

设置视频播放器的宽度。

 poster:当视频还没下载,或者用户还没点播放时的第一张画面,也可以是一张图片路径。

注意:当设置宽高的时候,一般情况下只会设置宽或高,另外一个由其自由变换,否则视频不会真的按照预想改变,除非设置正好。

b)            视频播放

<video src="../mp3/561902ae6ac6e6649.mp4" controls></video>

c)            说明:由于版权等原因,不同的浏览器可支持播放的格式是不一样的;

 

 

 

 

十二:DOM扩展:

获取元素:
a)     document.getElementsByClassName ('class') 通过类名获取元素,以类数组形式存在。getElementsByTagName

b)     document.querySelector('selector') 通过CSS选择器获取元素,符合匹配条件的第1个元素。

c)     document.querySelectorAll('selector') 通过CSS选择器获取元素,以类数组形式存在。


类名操作: a) Node.classList.add(
'class') 添加class b) Node.classList.remove('class') 移除class c) Node.classList.toggle('class') 切换class,有则移除,无则添加 d) Node.classList.contains('class') 检测是否存在class


自定义属性: a) 在HTML5中我们可以自定义属性,其格式如下data
-*="",例如:data-info="我是自定义属性",通过Node.dataset['info'] 我们便可以获取到自定义的属性值。 b) 当我们如下格式设置时,则需要以驼峰格式才能正确获取:data-my-name="itcast",获取Node.dataset['myName']



小案例:tab标签页
1、 练习重点: i. 获取元素的方式 ii. 自定义属性的使用 iii. 类名操作:如添加类样式,移除类样式 2、 效果图 3、 结构 <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>2名晋升为上将军官颁发命令状</li> <li>郭声琨了解指导公安消防部队抗洪工作</li> <li>媒体:曾任职中办的这位官员仕途有变</li> <li>广西警方端掉地下兵工厂缴获大批炮弹</li> <li>她完美诠释奇葩考题夺金牌</li> <li>中国奥运选手在里约多次遭抢劫</li> </ol> </section> <section class="cont active" id="global"> <ol> <li>河南再次发生矿难,死伤人数超过100</li> <li>禽流感次发生蔓延,***指示</li> <li>南方大旱,农作物减产绝收面积上亩</li> <li>猪流感在广减产绝收发</li> <li>禽流感在全国多作物减产绝收面积上亩</li> <li>猪流感在广东群体性暴发</li> </ol> </section> <section class="cont" id="sports"> <ol> <li>河南再次发生矿难,死伤人数超过10</li> <li>禽流感在全国多处农作物农延,***指示</li> <li>南方大旱,农作物减产绝收面积上亩</li> <li>猪流感在广东群体性暴发</li> <li>禽流感在全农作物继续蔓延,***指示</li> <li>南方大农作物减产绝收面积上亩</li> <li>猪流感在广东群体性暴发</li> </ol> </section> <section class="cont" id="funny"> <ol> <li>福建发生血腥命案:两女遭割喉 1男孩被砍数刀</li> <li>四川原副省长李成云被查 5年前曾违纪又复出</li> <li>胡歌反对粉丝探班:以前请吃饭现在会黑脸</li> <li>曝郑爽爸爸歌厅撩妹 与女子勾肩搭背显亲密</li> <li>宜宾公安副局长无证驾驶出车祸 弃车离开现场</li> <li>国子监大街门匾现错字 已悬挂近10年(图)</li> <li>猪流感在广东群体性暴发</li> </ol> </section> </div> 4、 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>

 

 下面要学习的内容:

了解  网络状态改变事件 
使用  全屏API 实现 元素全屏效果
使用  文件读取接口 实现 文件读取预览效果
使用  拖拽接口 实现 常见拖拽效果
使用  地理定位接口 获取 用户位置信息
使用  Web存储接口 实现数据的读写
了解  应用缓存接口
使用  多媒体接口 实现 自定义播放器

 网络状态:

 

 

使用  全屏API 实现 元素全屏效果










使用 文件读取接口 实现 文件读取预览效果











使用 拖拽接口 实现 常见拖拽效果
五:拖拽:
1.    定义和用法:拖放是 HTML5 中非常常见的功能。
2.    在拖放的过程中会触发以下事件:
a) 在拖动目标上触发事件 (源元素):  ondragstart
- 用户开始拖动元素时触发  ondrag - 元素正在拖动时触发  ondragend - 用户完成元素拖动后触发
b) 释放目标时触发的事件— 当拖拽元素在目标容器上进行操作的时候:  ondragenter
- 当被鼠标拖动的对象进入其容器范围内时触发此事件  ondragover - 当某被拖动的对象在另一对象容器范围内拖动时触发此事件  ondragleave - 当被鼠标拖动的对象离开其容器范围内时触发此事件  ondrop - 在一个拖动过程中,释放鼠标键时触发此事件
3. 注意: 1. 在拖动元素时,每隔 350 毫秒会触发 ondrag 事件。 2. 为了让元素可拖动,需要使用 HTML5 draggable 属性 3. 链接和图片默认是可拖动的,不需要 draggable 属性 4. 可以通过addEventListener来添加拖拽相关事件 5. 事件源:触发事件的源,一般情况下我们会将相同操作的多个对象绑定到同一个处理事件,同时传递当前的对象到处理方法,这就是事件源参数 小案例:实现元素的拖拽操作:

效果: 2. 网页结构代码: <!--标记是否可以拖动,true表示可以拖动--> <div class="div1"> <p draggable="true" id="pe">试着把我拖过去</p> </div> <div class="div2"></div>

3. Js代码 (几个事件的说明): <script> /*这几次拖拽的事件源都是当前被拖拽的元素*/ /*开始拖拽*/ document.addEventListener("dragstart",function(e){ //设置当前目标元素的透明度,产生拖拽效果 e.target.style.opacity=0.4; //将当前的被拖拽元素的id号存储到事件源对象中 e.dataTransfer.setData("Text", e.target.id); }); /*拖拽进行中*/ document.addEventListener("drag",function(e){ e.target.parentNode.style.borderColor="green"; }); /*拖拽结束*/ document.addEventListener("dragend",function(e){ e.target.style.opacity=1; e.target.parentNode.style.borderColor="red"; }); /*下面几个方法的事件源是目标元素,而不是被拖拽的元素*/ /*当将当前元素拖拽到另外一个元素上时触发*/ document.addEventListener("dragenter",function(e){ if(e.target.className=="div2"){ e.target.style.borderColor="pink"; } else if(e.target.className=="div1"){ e.target.style.borderColor="red"; } }); /*拖拽元素在目标元素上移动时触发*/ document.addEventListener("dragover",function(e){ /*默认情况下,一个元素不能拖拽到另外一个元素内,如果想允许拖拽,我们必须阻止默认的事件冒泡*/ e.preventDefault(); }); /*当拖拽元素离开目标元素时触发*/ document.addEventListener("dragleave",function(e){ if(e.target.className=="div2"){ e.target.style.borderColor="blue"; } }); /*当拖拽元素在目标元素上松开的时候触发*/ document.addEventListener("drop",function(e){ //1.阻止事件冒泡 e.preventDefault(); if(e.target.className=="div2" || e.target.className=="div1"){ //2.还原目标元素的默认样式 e.target.style.borderColor="blue"; //3.获取被拖拽元素的id var id= e.dataTransfer.getData("Text"); //4.追加被拖拽元素到目标元素 e.target.appendChild(document.getElementById(id)); } }); </script>




使用 地理定位接口 获取 用户位置信息
四:地理定位:了解
1.    在HTML规范中,增加了获取用户地理信息的API,这样使得我们可以基于用户位置开发互联网应用,即基于位置服务 (Location Base Service)
2.    获取地理信息方式
a)    IP地址
b)    三维坐标
i.    GPS(Global Positioning System,全球定位系统)
ii.    Wi-Fi
iii.    手机信号
c)    用户自定义数据
如下图对不同获取方式的优缺点进行了比较,浏览器会自动以最优方式去获取用户地理信息。 
4.    隐私:  推送通知
HTML5 Geolocation(地理位置定位) 规范提供了一套保护用户隐私的机制。必须先得到用户明确许可,才能获取用户的位置信息
5.    API说明:
a)    navigator.getCurrentPosition(successCallback, errorCallback, options) 获取当前地理信息
b)    navigator.watchPosition(successCallback, errorCallback, options) 重复获取当前地理信息
c)    1、当成功获取地理信息后,会调用succssCallback,并返回一个包含位置信息的对象position。Coords(坐标)
d)    position.coords.latitude纬度
e)    position.coords.longitude经度
f)    当获取地理信息失败后,会调用errorCallback,并返回错误信息error
g)    可选参数 options 对象可以调整位置信息数据收集方式
6.    百度地图案例-介绍












 



使用 Web存储接口 实现数据的读写
六:web存储:
1.    需求:随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,
传统方式我们以document.cookie来进行存储的,但是由于其存储大小只有4k左右,并且解析也相当的复杂,给开发带来诸多不便,HTML5规范则提出解决方案
2. HTML5提供的解决方案: a) window.sessionStorage b) window.localStorage
3. 特点: a) 设置、读取方便 b) 容量较大,sessionStorage约5M、localStorage约20M c) 只能存储字符串,可以将对象JSON.stringify() 编码后存储
4. Window.sessionStorage的使用 a) 特点: i. 生命周期为关闭浏览器窗口:相当于存储在当前页面的内内存中 ii. 在同一个窗口下数据可以共享(在当前页面下可以获取到,换另外一个页面下不能获取到)

b)    方法介绍:(两种存储方式的方法一致)
i.    SetItem(key,value):设置数据,以键值对的方式
ii.    getItem(key):通过指定的键获取对应的值内容
iii.   removeItem(key):删除指定的key及对应的值内容
iv.    clear():清空所有存储内容

c)    使用说明:
<script>
    var userData=document.getElementById("userName");
    //存储数据
    document.getElementById("setData").onclick=function(){
        window.sessionStorage.setItem("userName",userData.value);
    }
    //获取数据
    document.getElementById("getData").onclick=function(){
        var value=window.sessionStorage.getItem("userName");
        alert(value);
    }
</script>

 



5. Window.localStorage的使用 a) 特点: i. 永久生效,除非手动删除:存储在硬盘上 ii. 可以多窗口共享。但是不能跨浏览器 b) 使用说明: <script> var userData=document.getElementById("userName"); //存储数据 document.getElementById("setData").onclick=function(){ window.localStorage.setItem("userName",userData.value); } //获取数据 document.getElementById("getData").onclick=function(){ var value=window.localStorage.getItem("userName"); alert(value); } //删除数据 document.getElementById("removeData").onclick=function(){ window.localStorage.removeItem("userName"); } </script>

 





了解 应用缓存接口
1.    概念:使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本
2.    优势:
a)    可配置需要缓存的资源
b)    网络无连接应用仍可用
c)    本地读取缓存资源,提升访问速度,增强用户体验
d)    减少请求,缓解服务器负担
3.    Cache Manifest 基础:
a)    如需启用应用程序缓存,请在文档的 <html> 标签中包含 manifest 属性:
<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>
b)    每个指定了 manifest 的页面在用户对其访问时都会被缓存。如果未指定 manifest 属性,则页面不会被缓存(除非在 manifest 文件中直接指定了该页面)。
c)    manifest 文件的建议的文件扩展名是:".appcache"。
d)    注意,manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest"。必须在 web 服务器上进行配置
4.    Manifest 文件:
a)    概念:manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)
b)    manifest 文件可分为三个部分
    CACHE MANIFEST – 开始
    CACHE在此标题下列出的文件将在首次下载后进行缓存
    NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
    FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
c)    CACHE MANIFEST说明:
CACHE MANIFEST,放置在第一行,是必需的:
----------------------------------------------------------------------------------------------------
CACHE :
/theme.css
/logo.gif
/main.js
----------------------------------------------------------------------------------------------------
上面的 manifest 文件列出了三个资源:一个 CSS 文件,一个 GIF 图像,以及一个 JavaScript 文件。当 manifest 文件加载后,浏览器会从网站的根目录下载这三个文件。然后,无论用户何时与因特网断开连接,这些资源依然是可用的
d)    NETWORK说明:
NETWORK 小节规定文件 "login.asp" 永远不会被缓存,且离线时是不可用的,如
-----------------------------------------------------------------------------------------------------
NETWORK:
login.asp
----------------------------------------------------------------------------------------------------
e)    FALLBACK说明:
FALLBACK 小节规定如果无法建立因特网连接,就使用指定的资源代替所请求的url的资源,如:
------------------------------------------------------------------------------------------------------
FALLBACK:
/html5/ /404.html
-------------------------------------------------------------------------------------------------------
注释:当html5资源在离线状态下无法请求的时候,就使用404.html代替
f)    其它:
1、CACHE: 可以省略,这种情况下将需要缓存的资源写在CACHE MANIFEST
2、可以指定多个CACHE: NETWORK: FALLBACK:,无顺序限制
3、#表示注释,只有当demo.appcache文件内容发生改变时或者手动清除缓存后,才会重新缓存。
4、chrome 可以通过chrome://appcache-internals/工具和离线(offline)模式来调试管理应用缓存
g)    更新缓存:
一旦文件被缓存,则浏览器会继续展示已缓存的版本,即使修改了服务器上的文件。为了确保浏览器更新缓存,也需要更新 manifest 文件,也就意味着一旦应用被缓存,它就会保持缓存直到发生下列情况:
1.    用户清空浏览器缓存
2.    manifest 文件被修改(参阅下面的提示)
3.    由程序来更新应用缓存
说明:更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法

 





使用 多媒体接口 实现 自定义播放器

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

posted @ 2018-08-22 11:24  不变的真理  阅读(252)  评论(0)    收藏  举报