點評:HTML5 向開發(fā)人員提供了很多新的標(biāo)簽, 如 section, nav, article, header 和 footer 等. 這些標(biāo)簽語義化程度高, 會被經(jīng)常使用, 但在 IE6, IE7, IE8 和 Firefox 2 等老式瀏覽器中不能識別和正常使用一直是很多網(wǎng)友比較憤怒的事情,接下來介紹如何消除此憤怒
HTML5 向開發(fā)人員提供了很多新的標(biāo)簽, 如 section, nav, article, header 和 footer 等. 這些標(biāo)簽語義化程度高, 會被經(jīng)常使用, 但在 IE6, IE7, IE8 和 Firefox 2 等老式瀏覽器中不能識別和正常使用.
為什么老式的瀏覽器不能識別這些標(biāo)簽?其實錯不在瀏覽器, 因為在那個時代根本不存在這種標(biāo)簽, 所以不能正確識別出來, 而這種不尋常的標(biāo)簽識別令 DOM 結(jié)構(gòu)變得異常.
我們有測試代碼如下. 是一個文章標(biāo)題和藍色字的文章內(nèi)容, 其中文章內(nèi)容用了 article 標(biāo)簽.
復(fù)制代碼
代碼如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>測試</title>
<style>
article{color:#06F;}
</style>
</head>
<body>
<h1>文章標(biāo)題</h1>
<article>
這是文章內(nèi)容,應(yīng)該是一段藍色的文字。在老式瀏覽器中,如果不做 hack 將顯示異常。
</article>
</body>
</html>
IE8 不能識別 article 標(biāo)簽, 定義在標(biāo)簽上的 CSS 樣式?jīng)]有起作用. 在 IE8 中, <article> 被解釋成命名為 <article /> 和 </article /> 兩個空的標(biāo)簽元素, 與文章內(nèi)容并列為兄弟節(jié)點, 如下圖.
既然因為不能識別標(biāo)簽而不能使用, 解決辦法就是讓標(biāo)簽被識別出來. 所幸, 簡單地通過 document.createElement(tagName) 即可以讓瀏覽器識別標(biāo)簽和 CSS 引擎知道該標(biāo)簽的存在. 假設(shè)我們上面的例子的 <head> 區(qū)域加上如下代碼.
復(fù)制代碼
代碼如下:
<script>
document.createElement('article');
</script>
自然, 文字也顯示成正常的藍色.
博客早就轉(zhuǎn)用 HTML5 的寫法, 但苦于很多用戶沒有用最新的瀏覽器, 一直還在用 HTML4 的標(biāo)簽集. HTML5 很多標(biāo)簽語義化強而且實用, 我也開始嘗試一些常用的標(biāo)簽了, 現(xiàn)在用上了 article 和 time 標(biāo)簽.
新聞熱點
疑難解答