HTML5新的語義標(biāo)簽盡管有很多的好處,但是在低版本的老IE瀏覽器中還是存在兼容性問題的,常常讓人感到頭疼,到底是大膽的使用新標(biāo)簽還是使用傳統(tǒng)的大量的DIV無義標(biāo)簽?今天就簡(jiǎn)單的看看H5新標(biāo)簽的兼容性處理方式。
首先來看一小段簡(jiǎn)單的代碼:
HTML代碼:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>測(cè)試H5新標(biāo)簽兼容性</title> <style> header, footer{width:50px; height: 50px; background-color: #f00;} </style> </head> <body> <header id="header">header</header> <footer id="footer">footer</footer> </body> </html>
Google瀏覽器下:
IE6瀏覽器下:
很明顯,header和footer在支持H5新標(biāo)簽的瀏覽器下已塊級(jí)元素呈現(xiàn),而在IE8及以下的瀏覽器中以文本呈現(xiàn)并且樣式?jīng)]有起作用,說明不被支持,那如何解決呢?
首先,第一種方法便是使用DOM操作來添加這些標(biāo)簽,既然瀏覽器不支持,那我自己來創(chuàng)建一個(gè):
HTML代碼:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>測(cè)試H5新標(biāo)簽兼容性</title> <script> document.createElement('header'); document.createElement('footer'); </script> <style> header, footer{display: block; width:50px; height: 50px; background-color: #f00;} </style> </head> <body> <header id="header">header</header> <footer id="footer">footer</footer> </body> </html>
這時(shí)候,我們?cè)賮砜纯碔E6瀏覽器顯示的效果:
紅色的背景色可以顯示出來了,說明通過document.createElement()這一方法是可行的,那為什么樣式的寬高不起作用呢?因?yàn)樘砑拥脑厥莾?nèi)聯(lián)元素,內(nèi)聯(lián)元素是沒有寬高的,在了解這一點(diǎn)以后,我們?cè)俳o案例中的header和footer添加一個(gè)"display: block;"屬性,看看效果會(huì)有什么變化。
<style> header, footer{display: block; width:50px; height: 50px; background-color: #f00;} </style>
IE6瀏覽器顯示的效果:
現(xiàn)在顯示的效果跟我們需要的就完全一樣了,也就是說通過這種方法可以解決H5新標(biāo)簽在老IE瀏覽器中的兼容問題。但是,另外一個(gè)問題,那么多的新標(biāo)簽,如果每個(gè)都要通過這種方法去生產(chǎn)的話,是不是太麻煩了呢?
所以,我們現(xiàn)在介紹第二種方式,直接借用前輩大牛封裝好的js庫(kù) — html5shiv.js
HTML代碼:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>測(cè)試H5新標(biāo)簽兼容性</title> <script src="js/html5shiv.js"></script> </head> <body> <header id="header">header</header> <footer id="footer">footer</footer> <script src="js/jquery-1.11.0.min.js"></script> <script> $('#header').css('color','#f00'); $('#footer').css({'width':'100px','height':'100px', 'border':'1px solid #ddd', 'backgroundColor':'#f00'}); $('#header').html('我是一只小小鳥'); </script> </body> </html>
那我們現(xiàn)在直接打開IE6瀏覽器看效果:
完全可以實(shí)現(xiàn)我們想要的效果,而且操作更加的簡(jiǎn)單,代碼量更少,大家不妨也可以在IE7和IE8瀏覽器中也測(cè)試一下。