HTML5語義化標簽的應用


前言

最近在讀HTML5秘籍(the missing manual),書中對HTML5的定義和理解是:HTML5實際上是一組獨立標准的集合。有些標准已經得到了支持,而另外一些標准幾年內(甚至永遠)不會得到支持,即HTML5在某些瀏覽器的某些版本中能夠運行。HTML5作為新一代web的開發標准,相信有不少開發者已經垂涎它各種具有革命性的新功能,諸如:語義化的標簽和元素、新增表單控件、化繁為簡的富媒體支持、神奇的本地數據存儲技術、強大的繪圖技術(canvas)以及離線、地理定位等。本文討論的只是如何利用html5的各種明確的語義化標簽來構建我們的頁面。

 

關於DOCTYPE

 在HTML5來臨之前,一個標准的XHTML頭部代碼應該是這樣的:

<!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">
</head>
......

這么復雜的一大推代碼相信很少人會去手寫,也沒有必要去記住。(小弟不才,在HTML5沒來到之前都是直接打開 DW,現在是用sublime text2自動生成的,O(∩_∩)O~)

而一個標准的HTML5頭部是這樣的:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
.......

哪個更簡單些就不用我來說了,笨拙的我都能輕易記住了,這HTML5呀,果然是好東西啊。但是好使的東西總是需要付出點代價的(╯﹏╰),顯然是瀏覽器的兼容性問題,主要是微軟的 IE6、IE7、IE8 ,還有可能就是一些非主流瀏覽器和一些基於IE內核的瀏覽器。綜合考慮多方面因素,我們還是選擇HTML5,因為這個能省去100多字節(對於PV是百萬級以上的站點,能省下不少的流量呢)的頭部已經可以完美兼容了。大家都可能知道,在頁面沒有定義DOCTYPE的情況下或者因為一些字符使得DOCTYPE失效的情況下,會觸發各種怪異現象諸如盒模型不正確,js捕獲數據怪異等,而只要定義了瀏覽器就可以在標准模式下解析頁面,而不需要指定某個類型的DTD了。

 

豐富明確的語義化標簽

語義化編碼是每個從事前端開發人員都需具備的技能,但隨着web技術的發展和各種新技術、新思想的產生,原有的XHTML那具有語義化的標簽已經有點力不從心了。而HTML5就為我們提供了一系列新的標簽和屬性,讓我們在維護和修改頁面時不需面對嵌套N層、令人煩心的div了,並且使用這些新元素能讓任何人無障礙地訪問網頁,更利於搜索引擎,下面舉個例子說明下:

   <div class="article">
      <div class="header">
        <h1>我是文章標題</h1>
        <div class="tool">
            <a class="javascript:;">按鈕一</a>
            <a class="javascript:;">按鈕二</a>
        </div>
      </div>
      <div class="main">
        <p>我是文章正文</p>
      </div>
      <div class="guidance">我是文章導讀</div>
   </div>

而運用HTML5可以這樣寫:

    <section class="article">
      <header class="header">
        <h1>我是文章標題</h1>
        <section class="tool">
          <a class="javascript:;">按鈕一</a>
          <a class="javascript:;">按鈕二</a>
        </section>
      </header>
      <article class="main">
        <p>我是文章正文</p>
      </article>
      <footer class="guidance">我是文章導讀</footer>
    </section>

另外語義化標簽如:aside、figure、figcaption、hgroup、nav的運用,適用場合呢,我在這里就不一一列舉了,有興趣的童鞋可以 點擊這里上面對於html各個標簽的講解還是蠻到位的。

 

HTML5標簽的向前兼容

有很多人在運用 HTML5標簽搭建新頁面的時候發現一個問題, 就是這些用起來感覺很好很爽的標簽在IE8以及以下版本的瀏覽器都不生效,加了樣式也是徒勞無益的,全部整齊地屬於inline行內元素,於是乎,有人就覺得,在IE8還沒被淘汰之前,HTML5在web應用上只是一個空想(include me)。不過,事實告訴我們,成功有時候需要借助外力,呵呵,又開始文縐縐了~

想讓HTML5向前兼容我們需要一段小小的JS函數來協助:

<script type="javascript">
  document.createElement("article");
  document.createElement("aside");
  document.createElement("footer");
  document.createElement("header");
  document.createElement("nav");
  document.createElement("section");
  document.createElement("details");
  document.createElement("dialog");
  document.createElement("output");
  document.createElement("time");
  ...
</script>

上面代碼的作用就是創建一系列標簽,使IE8及以下的瀏覽器都能識別。

然后就是給這些標簽一個css來初始化,由於IE8及以下瀏覽器對這些新標簽沒有提供默認樣式,所以他們都被解析為行內元素,因此我們需要在css初始化文件里添加以下代碼來使其變成塊級元素

article,aside,footer,header,nav,section,hgroup{ display:block;}
details,dialog,output,time{ display:inline;}

這樣的話我們在實際開發中就能運用HTML5了,不過在實際項目中我們一般會將js部分的那段初始化代碼封裝到一個js文件如resetHTML5_forIE.js,然后在header部分使用IE條件注釋針對IE進行調用:

<!--[if lte IE8]>
<script type="text/javascript" src="js/resetHTML5_forIE.js"></script>
<![endif]--> 

 

結語

 由於小弟才剛接觸HTML5,很多東西都是一筆帶過的,好像記流水賬似的^_^,講不清、說不准的還望各位前輩指正。哎呀,又到點吃飯了......(⊙o⊙),ps:貌似下午又沒上課,逃課成指數遞增了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM