用語義化代碼更直觀,而且更方便SEO優(yōu)化。但是此HTML5新標(biāo)簽在IE6/IE7/IE8上并不能識別,需要進(jìn)行JavaScript處理。以下就介紹幾種方式。
<!--[if lt IE 9]>
<script>
(function() {
if (!
/*@cc_on!@*/
0) return;
var e = "abbr, article, aside, audio, canvas, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video".split(', ');
var i= e.length;
while (i--){
document.createElement(e[i])
}
})()
</script>
<![endif]-->
如果是IE9以下的IE瀏覽器將創(chuàng)建HTML5標(biāo)簽, 這樣非IE瀏覽器就會忽視這段代碼,也就不會有無謂的http請求了。
<!--[if lt IE 9]>
<script type="text/javascript" src="http://cdn.bootcss.com/html5shiv/r29/html5.min.js"></script>
<![endif]-->
上面這段代碼僅會在IE瀏覽器下運(yùn)行,還有一點(diǎn)需要注意,在頁面中調(diào)用html5.js文件必須添加在頁面的head元素內(nèi),因?yàn)镮E瀏覽器必須在元素解析前知道這個(gè)元素,所以這個(gè)js文件不能在頁面底部調(diào)用。
不管使用以上哪種方法,都要初始化新標(biāo)簽的CSS。因?yàn)镠TML5在默認(rèn)情況下表現(xiàn)為內(nèi)聯(lián)元素,對這些元素進(jìn)行布局我們需要利用CSS手工把它們轉(zhuǎn)為塊狀元素方便布局
/*html5*/
article,aside,dialog,footer,header,section,footer,nav,figure,menu{display:block}
如果IE6/7/8 禁用腳本的用戶,那么就變成了無樣式的"白板"網(wǎng)頁,我們該怎么解決呢?
我們可以參照facebook的做法,即引導(dǎo)用戶進(jìn)入帶有noscript標(biāo)識的 “/?_fb_noscript=1”頁面,用 html4 標(biāo)簽替換 html5 標(biāo)簽,這要比為了保持兼容性而寫大量 hack 的做法更輕便一些。
<!--[if lte IE 8]>
<noscript>
<style>
.html5-wrappers{display:none!important;}
</style>
<div class="ie-noscript-warning">您的瀏覽器禁用了腳本,請<a href="#">查看這里</a>來啟用腳本!或者<a href="/?noscript=1">繼續(xù)訪問</a>.
</div>
</noscript>
<![endif]-->
這樣可以引導(dǎo)用戶開啟腳本,或者直接跳轉(zhuǎn)到HTML4標(biāo)簽設(shè)計(jì)的界面。
版本瀏覽器不識別新的語義化標(biāo)簽。
上面這些標(biāo)簽, 都是塊級元素, 沒有任何默認(rèn)樣式, 容器級標(biāo)簽, 可以包裹任何東西, 在語義上都比div大, 它們能包裹div, 但是div不能包裹它們。
新的提綱標(biāo)簽, IE9開始兼容, IE8還是不能用這些標(biāo)簽, 移動端中可以正常使用, 因?yàn)槭謾C(jī)沒有IE。
解決方案:利用html5shiv.js
下載地址: https://www.bootcdn.cn/html5shiv/
HTML是web開發(fā)中三大規(guī)范之一,可以參考:Web前端開發(fā)-HTML入門干貨 。
HTML產(chǎn)生于1990年,1997年的HTML4.0成為互聯(lián)網(wǎng)標(biāo)準(zhǔn)并廣泛應(yīng)用,HTML5是在HTML4.01(1999年發(fā)布)的基礎(chǔ)上發(fā)展而來,在2008年正式發(fā)布,在2012年形成了穩(wěn)定版本。
其實(shí)在HTML4.01之后,W3C組織除了HTML5之外,為了嚴(yán)格html編寫規(guī)范,發(fā)布了XHTML。經(jīng)過了跌宕起伏的分歧、融合之路,本來預(yù)計(jì)要逐步被XHTML替代的HTML5,最終成了W3C組織確認(rèn)的html規(guī)范。
在HTML5規(guī)范中添加了很多新元素及功能,比如: 更好的頁面結(jié)構(gòu)(語義化標(biāo)簽)、圖形的繪制(畫布)、多媒體(音頻、視頻)內(nèi)容、智能表單、地理位置、數(shù)據(jù)存儲以及多線程等。
可以通過html5test.com網(wǎng)站,測試HTML5各標(biāo)簽在各類瀏覽器中支持程度。
html5test.com
PC瀏覽器各版本支持HTML5考量
移動瀏覽器各版本支持HTML5考量
對于IE6、7、8來講,支持極少部分的HTML5新標(biāo)簽,IE9也是部分支持。
在低版本瀏覽器中兼容使用HTML5標(biāo)簽,有兩種方案,一:自定義標(biāo)簽;二:使用第三方j(luò)s插件
(1)自定義標(biāo)簽
可以利用添加自定義標(biāo)簽的方式為IE 瀏覽器添加 HTML5 元素。
<script>
//可以使用自定義標(biāo)簽
document.createElement("header");
document.createElement("article");
document.createElement("aside");
document.createElement("section");
document.createElement("footer");
</script>
但是Internet Explorer 8 及更早 IE 版本的瀏覽器不支持以上的方式,所以采用以下方式。
(2)利用第三方j(luò)s插件
html5shiv.js是第三方插件,能夠解決IE9以下瀏覽器對html5新增標(biāo)簽的不識別,并導(dǎo)致CSS不起作用的問題。
<head>
<meta charset="utf-8">
<title>渲染 HTML5</title>
<!-- 專門針對IE瀏覽器的語句,且只能被IE9識別,其他瀏覽器將以下if endif語句認(rèn)為是注釋 -->
<!--[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)語義化標(biāo)簽
相對于無具體含義的div和span標(biāo)簽,語義化標(biāo)簽的優(yōu)點(diǎn)是方便搜索引擎能識別頁面結(jié)構(gòu),有利于SEO。
header:該標(biāo)簽定義了頁面的頭部區(qū)域;
nav:該標(biāo)簽定義了頁面的導(dǎo)航鏈接區(qū)域;
footer:該標(biāo)簽定義了頁面或section的頁腳;
section:該標(biāo)簽定義了頁面區(qū)域;
article:該標(biāo)簽定義了頁面的內(nèi)容區(qū)域;
(2)多媒體標(biāo)簽
1)視頻標(biāo)簽
video:用來定義視頻內(nèi)容,支持多種視頻格式,包括.mp4、.ogg、.webm等,最常用的是.mp4。
<body>
<!-- src屬性設(shè)置視頻源,
width、height設(shè)置視頻大小,單位是像素,
autoplay屬性設(shè)置自動播放,
對于google瀏覽器需要添加muted屬性,表示靜音播放,
controls屬性設(shè)置播放控件,包括播放、暫停等,
loop屬性設(shè)置視頻循環(huán)播放,
poster屬性設(shè)置視頻封面,
-->
<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)音頻標(biāo)簽
audio:用來定義音頻內(nèi)容,支持多種音頻格式,包括.mp3、.wav、.ogg等,最常用的是.mp3。
音頻標(biāo)簽的用法和視頻標(biāo)簽的基本一樣,屬性及屬性值含義也基本一樣。
Google的chrome瀏覽器將音頻、視頻自動播放給默認(rèn)禁止了,視頻可以通過添加靜音播放折中解決,但是音頻單獨(dú)通過html標(biāo)簽和屬性是不能解決的,需要js配合使用。
(3)智能表單標(biāo)簽
1)新增input類型
tel:限制輸入電話號碼,目前只有 Safari 8 支持 tel 類型;
email:在提交時(shí)驗(yàn)證輸入內(nèi)容是否符合郵箱格式;
date:限制輸入的內(nèi)容為日期,瀏覽器會彈出日期選擇器;
time:限制輸入的內(nèi)容為時(shí)間,瀏覽器會彈出日期選擇器;
number:限制輸入的內(nèi)容僅為數(shù)字;
url:在提交時(shí)驗(yàn)證輸入內(nèi)容是否符合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>時(shí)間:<input type="time" /></li>
<li>數(shù)量:<input type="number" min="1" max="5"/></li>
<li>網(wǎng)址:<input type="url" /></li>
<li>附件:<input type="file" /></li>
<li><input type="submit" /></li>
</ul>
</form>
2)新增input的屬性
min和max屬性可以限制數(shù)字的最值,可以限制日期、時(shí)間類型的最值;其屬性值為具體內(nèi)容。
required屬性表示必填項(xiàng);其屬性值為required。
placeholder屬性表示提示信息,其屬性值為提示信息。
multiple屬性表示input類型為file時(shí),可以文件多選;其屬性值為multiple。
autocomplete屬性表示是否顯示之前提及過的文本信息;其屬性值為on或者off。
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。