言
曾幾何時,前端的頁面布局一直采用div,但是div本身并沒有實際的意義,它只是定義了一個區域,而且這個區域是做什么的瀏覽器并不知道,不利于頁面的SEO優化。
因此HTML5中新增的語義化標簽就很好的解決了這個問題,當然它還有其他一些好處,接下來我們就一起來看看吧。
HTML5
語義化標簽的優點
即使在沒有CSS的支持下,瀏覽器依然能呈現出良好的內容結構。
有利于SEO,語義化的標簽更有利于爬蟲去解析更多有效信息。
跨設備體驗,不同設備都支持語義化標簽,那么即使在不同設備下依然可以有無縫體驗。
便于代碼開發和維護,語義化可以增加代碼的可讀性,讓團隊成員可以更好理解彼此的代碼意圖。
HTML5新增的語義化標簽
那么在HTML5中新增了哪些利于頁面布局的HTML5標簽呢?
我們先通過以下這張圖來看看。
HTML5新增語義化標簽
header標簽
header標簽表示頁面或一個區域(section)的頁眉部分,通常在里面包含h1-h6標簽來使用。
我們直接通過代碼來看看在瀏覽器上的效果。
header標簽效果
footer標簽
footer標簽和header標簽類似,表示頁面或一個區域(section)的頁腳部分,通常會將網站的證書,許可,版權協議等內容放在這塊。
footer標簽
hgroup標簽
hgroup標簽一般用于h1-h6標簽的組合,比如主標題,副標題,三級標題的組合情況。
我們通過以下代碼段來看看其代碼組織形式。
hgroup標簽
需要注意的一點是,如果需要使用hgroup標簽則保證在hgroup標簽里至少有兩個h標簽,如果只有一個h標簽,則應該去掉hgroup標簽。
nav標簽
nav標簽主要用于定義頁面的導航部分,例如頁面或者section中的側邊目錄欄。
其使用方式如下代碼段所示。
nav標簽
aside標簽
aside標簽一般會指定網頁的相關內容,友情鏈接等附注性的東西,類似于廣告也可以使用aside標簽。
main標簽
main標簽定義一個頁面的主要內容,在一個頁面中只能使用一次。
article標簽
article標簽表示的是一個獨立完整的內容區域,比如一張報紙的某個獨立版塊。
在article標簽內部可以包含其他語義化標簽,其基本使用如下所示。
article標簽
section標簽
section標簽表示的是文檔中內容的分節或分段,上述的article,nav或者aside其實都可以看做特殊的section標簽,如果能用article,nav,aside標簽,最好不要用section標簽。
section標簽與與article標簽可以互相嵌套,需要視具體情況而定。
結束語
如果你的布局還是只有div,那么看完了今天這篇文章后完全可以嘗試下新的HTML5標簽噢。
感興趣的同學可以加下我自己創建的Q群,大家相互學習交流,我也會盡力維護好群環境,群號如下所示。
號碼
增的HTML5結構標簽
結構標簽:(塊級元素) 有意義的div
標簽 | 含義 |
---|---|
<article> | 定義獨立的、完整的相關內容塊 |
<header> | 定義一個頁面或一個區域的頭部內容 |
<nav> | 定義導航類輔助內容 |
<section> | 定義一塊區域 |
<aside> | 定義頁面非正式內容部分的側邊欄 |
<hgroup> | 定義h1~h6標題組合 |
<figure> | 定義元素的組合,多用于圖片與圖片描述組合 |
<figcaption> | 定義 figure元素的描述 |
<footer> | 定義一個頁面或一個區域的底部內容 |
傳統div+css布局方式
HTML5布局方式
div+css布局方式和HTML5布局方式的區別、意義
HTML是web開發中三大規范之一,可以參考:Web前端開發-HTML入門干貨 。
HTML產生于1990年,1997年的HTML4.0成為互聯網標準并廣泛應用,HTML5是在HTML4.01(1999年發布)的基礎上發展而來,在2008年正式發布,在2012年形成了穩定版本。
其實在HTML4.01之后,W3C組織除了HTML5之外,為了嚴格html編寫規范,發布了XHTML。經過了跌宕起伏的分歧、融合之路,本來預計要逐步被XHTML替代的HTML5,最終成了W3C組織確認的html規范。
在HTML5規范中添加了很多新元素及功能,比如: 更好的頁面結構(語義化標簽)、圖形的繪制(畫布)、多媒體(音頻、視頻)內容、智能表單、地理位置、數據存儲以及多線程等。
可以通過html5test.com網站,測試HTML5各標簽在各類瀏覽器中支持程度。
html5test.com
PC瀏覽器各版本支持HTML5考量
移動瀏覽器各版本支持HTML5考量
對于IE6、7、8來講,支持極少部分的HTML5新標簽,IE9也是部分支持。
在低版本瀏覽器中兼容使用HTML5標簽,有兩種方案,一:自定義標簽;二:使用第三方js插件
(1)自定義標簽
可以利用添加自定義標簽的方式為IE 瀏覽器添加 HTML5 元素。
<script>
//可以使用自定義標簽
document.createElement("header");
document.createElement("article");
document.createElement("aside");
document.createElement("section");
document.createElement("footer");
</script>
但是Internet Explorer 8 及更早 IE 版本的瀏覽器不支持以上的方式,所以采用以下方式。
(2)利用第三方js插件
html5shiv.js是第三方插件,能夠解決IE9以下瀏覽器對html5新增標簽的不識別,并導致CSS不起作用的問題。
<head>
<meta charset="utf-8">
<title>渲染 HTML5</title>
<!-- 專門針對IE瀏覽器的語句,且只能被IE9識別,其他瀏覽器將以下if endif語句認為是注釋 -->
<!--[if lt IE 9]>
<script src="http://apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
</head>
<!--[if !IE]><!--> 除IE外都可識別 <!--<![endif]-->
<!--[if IE]> 所有的IE可識別 <![endif]-->
<!--[if IE 6]> 僅IE6可識別 <![endif]-->
<!--[if lt IE 6]> IE6以及IE6以下版本可識別 <![endif]-->
<!--[if gte IE 6]> IE6以及IE6以上版本可識別 <![endif]-->
<!--[if IE 9]> 僅IE9可識別 <![endif]-->
(1)語義化標簽
相對于無具體含義的div和span標簽,語義化標簽的優點是方便搜索引擎能識別頁面結構,有利于SEO。
header:該標簽定義了頁面的頭部區域;
nav:該標簽定義了頁面的導航鏈接區域;
footer:該標簽定義了頁面或section的頁腳;
section:該標簽定義了頁面區域;
article:該標簽定義了頁面的內容區域;
(2)多媒體標簽
1)視頻標簽
video:用來定義視頻內容,支持多種視頻格式,包括.mp4、.ogg、.webm等,最常用的是.mp4。
<body>
<!-- src屬性設置視頻源,
width、height設置視頻大小,單位是像素,
autoplay屬性設置自動播放,
對于google瀏覽器需要添加muted屬性,表示靜音播放,
controls屬性設置播放控件,包括播放、暫停等,
loop屬性設置視頻循環播放,
poster屬性設置視頻封面,
-->
<video
src="media/xiaomitv.mp4"
width="300"
height="100"
autoplay="autoplay"
muted="muted"
controls="controls"
loop="loop"
poster="images/a.jpg"
></video>
</body>
還可以采用如下代碼,兼容多種格式的視頻文件
<video width="320" height="240" controls="controls">
<source src="movie.mp4" type="video/mp4" />
<source src="movie.ogg" type="video/ogg" />
<source src="movie.webm" type="video/webm" />
Your browser does not support the video tag.
</video>
2)音頻標簽
audio:用來定義音頻內容,支持多種音頻格式,包括.mp3、.wav、.ogg等,最常用的是.mp3。
音頻標簽的用法和視頻標簽的基本一樣,屬性及屬性值含義也基本一樣。
Google的chrome瀏覽器將音頻、視頻自動播放給默認禁止了,視頻可以通過添加靜音播放折中解決,但是音頻單獨通過html標簽和屬性是不能解決的,需要js配合使用。
(3)智能表單標簽
1)新增input類型
tel:限制輸入電話號碼,目前只有 Safari 8 支持 tel 類型;
email:在提交時驗證輸入內容是否符合郵箱格式;
date:限制輸入的內容為日期,瀏覽器會彈出日期選擇器;
time:限制輸入的內容為時間,瀏覽器會彈出日期選擇器;
number:限制輸入的內容僅為數字;
url:在提交時驗證輸入內容是否符合url格式;
<form action="">
<ul>
<li>搜索:<input type="search" name="" id="" /></li>
<li>電話:<input type="tel" /></li>
<li>郵箱:<input type="email" /></li>
<li>日期:<input type="date" /></li>
<li>時間:<input type="time" /></li>
<li>數量:<input type="number" min="1" max="5"/></li>
<li>網址:<input type="url" /></li>
<li>附件:<input type="file" /></li>
<li><input type="submit" /></li>
</ul>
</form>
2)新增input的屬性
min和max屬性可以限制數字的最值,可以限制日期、時間類型的最值;其屬性值為具體內容。
required屬性表示必填項;其屬性值為required。
placeholder屬性表示提示信息,其屬性值為提示信息。
multiple屬性表示input類型為file時,可以文件多選;其屬性值為multiple。
autocomplete屬性表示是否顯示之前提及過的文本信息;其屬性值為on或者off。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。