html5 学习第四天

HTML5 语义元素

什么是语义元素?

一个语义元素能够清楚的描述其意义给浏览器和开发者。

无语义 元素实例: <div> 和 <span> - 无需考虑内容.

语义 元素实例: <form>, <table>, and <img> - 清楚的定义了它的内容.

HTML5 <section> 元素

<section> 标签定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。

根据W3C HTML5文档: section 包含了一组内容及其标题。

<section> 

 <h1>WWF</h1> 

 <p>The World Wide Fund for Nature (WWF) is....</p>

</section>

HTML5 <article> 元素

<article> 标签定义独立的内容。.

<article> 元素使用实例:

Forum post

Blog post

News story

Comment

<article> 

 <h1>Internet Explorer 9</h1>  

<p>Windows Internet Explorer 9(缩写为 IE9 )在2011年3月14日21:00 发布。</p>

</article>

HTML5 <nav> 元素

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

<nav> 元素用于定义页面的导航链接部分区域,但是,不是所有的链接都需要包含在 <nav> 元素中!

<nav> <a href="/html/">HTML</a> |

    <a href="/css/">CSS</a> |

    <a href="/js/">JavaScript</a> |

    <a href="/jquery/">jQuery</a>

</nav>

HTML5 <aside> 元素

<aside> 标签定义页面主区域内容之外的内容(比如侧边栏)。aside 标签的内容应与主区域的内容相关.

<p>My family and I visited The Epcot center this summer.</p> 

<aside> 

 <h4>Epcot Center</h4> 

 <p>The Epcot Center is a theme park in Disney World, Florida.</p>

</aside>

HTML5 <header> 元素

<header>元素描述了文档的头部区域,<header>元素主要用于定义内容的介绍展示区域.在页面中你可以使用多个<header> 元素,以下实例定义了文章的头部:

<article> 

     <header> 

         <h1>Internet Explorer 9</h1> 

         <p><time pubdate datetime="2011-03-15"></time></p> 

     </header> 

     <p>Windows Internet Explorer 9(缩写为 IE9 )是在2011年3月14日21:00发布的</p>

</article>

HTML5 <footer> 元素

<footer> 元素描述了文档的底部区域,<footer> 元素应该包含它的包含元素,一个页脚通常包含文档的作者,著作权信息,链接的使用条款,联系信息等,文档中你可以使用多个 <footer>元素.

<footer> 

     <p>Posted by: Hege Refsnes</p> 

     <p><time pubdate datetime="2012-03-01"></time></p>

</footer>

HTML5 <figure> 和 <figcaption> 元素

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

<figure> 元素的内容应该与主内容相关,但如果被删除,则不应对文档流产生影响。

<figcaption> 标签定义 <figure> 元素的标题.

<figcaption>元素应该被置于 "figure" 元素的第一个或最后一个子元素的位置。

<figure> 

     <img src="img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228"> 

     <figcaption>Fig1. - The Pulpit Pock, Norway.</figcaption>

</figure>

我们可以开始使用这些语义元素吗?

以上的元素都是块元素(除了<figcaption>).

为了让这些块及元素在所有版本的浏览器中生效,你需要在样式表文件中设置一下属性 (以下样式代码可以让旧版本浏览器支持本章介绍的块级元素):

header, section, footer, aside, nav, article, figure

{

    display: block;

}

Internet Explorer 8 及更早IE版本中的问题

IE8 及更早IE版本无法在这些元素中渲染CSS效果,以至于你不能使用 <header>, <section>, <footer>, <aside>, <nav>, <article>, <figure>, 或者其他的HTML5 elements.

解决办法: 你可以使用HTML5 Shiv Javascript脚本来解决IE的兼容问题。HTML5 Shiv下载地址:https://cdn.static.runoob.com/libs/html5shiv/3.7/html5shiv.min.js

<!--[if lt IE 9]>

<script src="html5shiv.js"></script>

<![endif]-->

以上代码在浏览器小于IE9版本时会加载html5shiv.js文件. 你必须将其放置于<head> 元素中,因为 IE浏览器需要在头部加载后渲染这些HTML5的新元素

HTML5 Web 存储

什么是 HTML5 Web 存储?

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

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

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

localStorage 和 sessionStorage 

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

localStorage - 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。

sessionStorage - 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

localStorage 对象

localStorage 对象存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。

localStorage.sitename="菜鸟教程";

document.getElementById("result").innerHTML="网站名:" + localStorage.sitename;

移除 localStorage 中的 "sitename" :

localStorage.removeItem("sitename");

不管是 localStorage,还是 sessionStorage,可使用的API都相同,常用的有如下几个(以localStorage为例):

保存数据:localStorage.setItem(key,value);

读取数据:localStorage.getItem(key);

删除单个数据:localStorage.removeItem(key);

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

得到某个索引的key:localStorage.key(index);

实例展示了用户点击按钮的次数。

if (localStorage.clickcount){ 

             localStorage.clickcount=Number(localStorage.clickcount)+1;}

        else{     

                localStorage.clickcount=1;}

document.getElementById("result").innerHTML=" 你已经点击了按钮 " + localStorage.clickcount + " 次 ";

Web Storage 开发一个简单的网站列表程序

网站列表程序实现以下功能:

    可以输入网站名,网址,以网站名作为key存入localStorage;

    根据网站名,查找网址;

    列出当前已保存的所有网站;

//保存数据 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 sitename = localStorage.getItem(search_site); 

    var find_result = document.getElementById("find_result"); 

    find_result.innerHTML = search_site + "的网址是:" + sitename;  }

<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_site">输入网站名:</label> 

    <input type="text" id="search_site" name="search_site"/> 

    <input type="button" onclick="find()" value="查找网站"/> 

    <p id="find_result"><br/></p>  </div>

HTML5 Web SQL 数据库

Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。如果你是一个 Web 后端程序员,应该很容易理解 SQL 的操作。Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。

核心方法

以下是规范中定义的三个核心方法:

1,openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。

2,transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。

3,executeSql:这个方法用于执行实际的 SQL 查询。

打开数据库

我们可以使用 openDatabase() 方法来打开已存在的数据库,如果数据库不存在,则会创建一个新的数据库,

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

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

1,数据库名称

2,版本号

3,描述文本

4,数据库大小

5,创建回调(会在创建数据库后被调用)

执行查询操作

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

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

db.transaction(function (tx) {

  tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');});

插入数据

在执行上面的创建表语句后,我们可以插入一些数据:

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

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")');});

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

db.transaction(function (tx) {

  tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');

  tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?)', [e_id, e_log]);});

读取数据

以下实例演示了如何读取数据库中已经存在的数据:

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

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")');});

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);});

删除记录

删除记录使用的格式如下:

db.transaction(function (tx) { 

 tx.executeSql('DELETE FROM LOGS WHERE id=1');});

删除指定的数据id也可以是动态的:

db.transaction(function(tx) { 

 tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]);});

更新记录

更新记录使用的格式如下:

db.transaction(function (tx) { 

 tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=2');});

更新指定的数据id也可以是动态的:

db.transaction(function(tx) { 

 tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=?', [id]);});

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容

  • _________________________________________________________...
    fastwe阅读 586评论 0 0
  • HTML5 Web 存储 HTML5 应用程序缓存HTML5 Web SQL 数据库Web SQL 数据库 API...
    依依玖玥阅读 672评论 0 1
  • 浏览器缓存(Browser Caching)是浏览器端保存数据用于快速读取或避免重复资源请求的优化机制,有效的缓存...
    fuyou2324阅读 5,116评论 0 8
  • Web SQL数据库API 并不是HTML5规范的一部分,但是他是一个独立的规范,引入一组使用SQL操作客户端数据...
    龍飝阅读 491评论 0 1
  • SGML(标准通用标记语言)和HTML(超文本标记语言),XML(可扩展标记语言)和HTML的之间有什么关系? S...
    王培921223阅读 1,334评论 0 3