html 06-HTML5詳解
06-HTML5詳解
#HTML5的介紹
#Web 技術發展時間線
-
1991 HTML
-
1994 HTML2
-
1996 CSS1 + JavaScript
-
1997 HTML4
-
1998 CSS2
-
2000 XHTML1(嚴格的html)
-
2002 Tableless Web Design(表格佈局)
-
2005 AJAX
-
2009 HTML5
-
2014 HTML5 Finalized
2002年的表格佈局逐漸被淘汰,是因為:表格是用來承載資料的,並不是用來劃分網頁結構的。
2009年就已經推出了HTML5的草案,但直到2014年才有定稿,是因為有移動端的推動。
H5草案的前身是叫:Web Application,最早是由
2007年被 W3C 組織接納,並在 2008-01-22 釋出 HTML5 的第一個草案。
#什麼是 HTML5
HTML5並不僅僅只是做為HTML標記語言的一個最新版本,更重要的是它制定了Web應用開發的一系列標準,成為第一個將Web做為應用開發平臺的HTML語言。
HTML5定義了一系列新元素,如新語義標籤、智慧表單、多媒體標籤等,可以幫助開發者建立富網際網路應用,還提供了一些Javascript API,如地理定位、重力感應、硬體訪問等,可以在瀏覽器內實現類原生應用。我們甚至可以結合 Canvas 開發網頁版遊戲。
HTML5
的廣義概念:HTML5代表瀏覽器端技術的一個發展階段。在這個階段,瀏覽器的呈現技術得到了飛躍發展和廣泛支援,它包括:HTML5、CSS3、Javascript API在內的一套技術組合。
HTML5
不等於HTML next version
。HTML5
包含:HTML
的升級版、CSS
的升級版、JavaScript API
的升級版。
總結:HTML5
是新一代開發Web 富客戶端應用程式整體解決方案。包括:HTML5,CSS3,Javascript API在內的一套技術組合。
富客戶端:具有很強的互動性和體驗的客戶端程式。比如說,瀏覽部落格,是比較簡單的客戶端;一個線上聽歌的網站、即時聊天網站就是富客戶端。
PS:
單純地從技術的角度講,相容性問題只會讓開發者徒增煩惱。
如果網頁端的程式能做到PC客戶端的體驗,就會對後者構成威脅。
#HTML5 的應用場景
列舉幾個HTML5 的應用場景:
(1)極具表現力的網頁:內容簡約而不簡單。
(2)網頁應用程式:
-
代替PC端的軟體:iCloud、百度腦圖、Office 365等。
-
APP端的網頁:淘寶、京東、美團等。
-
微信端:公眾號、小程式等。
(3)混合式本地應用。
(4)簡單的遊戲。
#HTML5 新增的內容
#語義化的標籤
#語義化的作用
語義標籤對於我們並不陌生,如<p>
表示一個段落、<ul>
表示一個無序列表。標籤語義化的作用:
-
能夠便於開發者閱讀和寫出更優雅的程式碼。
-
同時讓瀏覽器或是網路爬蟲可以很好地解析,從而更好分析其中的內容。
-
更好地搜尋引擎優化。
總結:HTML的職責是描述一塊內容是什麼(或其意義),而不是它長什麼樣子;它的外觀應該由CSS來決定。
#H5在語義上的改進
在此基礎上,HTML5 增加了大量有意義的語義標籤,更有利於搜尋引擎或輔助裝置理解 HTML 頁面內容。HTML5會讓HTML程式碼的內容更結構化、標籤更語義化。
我們常見的 css+div 佈局是:
在html5中,我們可以這樣寫:
傳統的做法中,我們通過增加類名如class="header"
、class="footer"
,使HTML頁面具有語義性,但是不具有通用性。
HTML5 則是通過新增語義標籤的形式來解決這個問題,例如<header></header>
、<footer></footer>
等,這樣就可以使其具有通用性。
傳統網頁佈局:
<!-- 頭部 -->
<div class="header">
<ul class="nav"></ul>
</div>
<!-- 主體部分 -->
<div class="main">
<!-- 文章 -->
<div class="article"></div>
<!-- 側邊欄 -->
<div class="aside"></div>
</div>
<!-- 底部 -->
<div class="footer">
</div>
H5 的經典網頁佈局:
<!-- 頭部 -->
<header>
<ul class="nav"></ul>
</header>
<!-- 主體部分 -->
<div class="main">
<!-- 文章 -->
<article></article>
<!-- 側邊欄 -->
<aside></aside>
</div>
<!-- 底部 -->
<footer>
</footer>
#H5中新增的語義標籤
-
<section>
表示區塊 -
<article>
表示文章。如文章、評論、帖子、部落格 -
<header>
表示頁首 -
<footer>
表示頁尾 -
<nav>
表示導航 -
<aside>
表示側邊欄。如文章的側欄 -
<figure>
表示媒介內容分組。 -
<mark>
表示標記 (用得少) -
<progress>
表示進度 (用得少) -
<time>
表示日期
本質上新語義標籤與<div>
、<span>
沒有區別,只是其具有表意性,使用時除了在HTML結構上需要注意外,其它和普通標籤的使用無任何差別,可以理解成<div class="nav">
相當於<nav>
。
PS:單標籤不用寫關閉符號。
#新語義標籤的相容性處理
IE8 及以下版本的瀏覽器不支援 H5 和 CSS3。解決辦法:引入html5shiv.js
檔案。
引入時,需要做if判斷,具體程式碼如下:
<!-- 條件註釋 只有ie能夠識別-->
<!--[if lte ie 8]>
<script src="html5shiv.min.js"></script>
<![endif]-->
上方程式碼是條件註釋:雖然是註釋,但是IE瀏覽器可以識別出來。解釋一下:
-
l:less 更小
-
t:than 比
-
e:equal等於
-
g:great 更大
PS:我們在測試 IE 瀏覽器的相容的時候,可以使用軟體 ietest,模擬IE6-IE11。
在不支援HTML5新標籤的瀏覽器,會將這些新的標籤解析成行內元素(inline)對待,所以我們只需要將其轉換成塊元素(block)即可使用。
但是在IE9版本以下,並不能正常解析這些新標籤,但是可以識別通過document.createElement('tagName')建立的自定義標籤。於是我們的解決方案就是:將HTML5的新標籤全部通過document.createElement('tagName')來建立一遍,這樣IE低版本也能正常解析HTML5新標籤了。
當然,在實際開發中我們更多采用的辦法是:檢測IE瀏覽器的版本,來載入第三方的JS庫來解決相容問題(如上方程式碼所示)。
#H5中的表單
傳統的Web表單已經越來越不能滿足開發的需求,HTML5 在 Web 表單方向做了很大的改進,如拾色器、日期/時間元件等,使表單處理更加高效。
#H5中新增的表單型別
-
email
只能輸入email格式。自動帶有驗證功能。 -
tel
手機號碼。 -
url
只能輸入url格式。 -
number
只能輸入數字。 -
search
搜尋框 -
range
滑動條 -
color
拾色器 -
time
時間 -
date
日期 -
datetime
時間日期 -
month
月份 -
week
星期
上面的部分型別是針對移動裝置生效的,且具有一定的相容性,在實際應用當中可選擇性的使用。
程式碼舉例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<title>表單型別</title>
<style>
body {
margin: 0;
padding: 0;
background-color: #F7F7F7;
}
form {
max-width: 500px;
width: 100%;
margin: 32px auto 0;
font-size: 16px;
}
label {
display: block;
margin: 10px 0;
}
input {
width: 100%;
height: 25px;
margin-top: 2px;
display: block;
}
</style>
</head>
<body>
<form action="">
<fieldset>
<legend>表單型別</legend>
<label for="">
email: <input type="email" name="email" required>
</label>
<label for="">
color: <input type="color" name="color">
</label>
<label for="">
url: <input type="url" name='url'>
</label>
<label for="">
number: <input type="number" step="3" name="number">