2012-04-26 62 views
1

首先,我已經看到了這個問題IE Compatibility issue,但是我有一個稍微不同的問題:H2內SPAN - 瀏覽器兼容?所有的

我有display: block的跨度,我想提出一個H2標籤裏面。這在每個(主要)瀏覽器中看起來都不錯嗎?

先前所述的鏈路上的答案,是使H2 display:inline,這是我不希望的,也是我不想用div更換span,因爲我不得不改變很多CSS。

PS。我不希望我的HTML驗證(使用驗證器),我只是想讓它工作。

+3

當您偏離標準時,您無法保證獲得的結果是 – 2012-04-26 11:31:57

+1

+1。即使它今天有效,也沒有人會說它會明天。 – mddw 2012-04-26 11:35:37

+1

爲什麼你喜歡'跨度'那麼多:o ctrl +找到所有'你的愛的跨度'替換'我們可愛的div' – Jack 2012-04-26 11:39:15

回答

2

它適用於當前的瀏覽器(包括舊版本),並且這不太可能會改變。像這樣的錯誤已經足以讓瀏覽器供應商改變他們的錯誤恢復機制。 HTML5即將制定錯誤恢復規則。

另一方面,使用spandisplay: block而不是使用div的意義是什麼?應該寫CSS,以便它不依賴於不同選擇可能有意義的標記元素的具體選擇;例如,通常,.foo是比span.foo更好的選擇器。

對標記或樣式表進行任何大範圍的更改都具有導致問題的不可忽視的風險,即使這種改變是如此的改進和簡單的改變。 (例如,全局搜索和替換通常做得太多,或者漏掉了一些東西。)這可能是繼續使用無效標記的原因,在實踐中風險最小的情況下。

+0

我知道我做的不是好的做法,但我不想改變HTML和CSS因爲我沒有寫出原始的HTML和CSS,所以不想搞亂任何東西。謝謝! – 2012-04-26 13:39:58

4

當你說「我不想讓我的HTML驗證(使用驗證器),我只是想讓它工作。」你犯了一個很大的錯誤。如果HTML不能驗證,那麼就不知道會發生什麼。這些標準是有原因的。

用div替換span,你不需要div上的顯示塊,因爲它默認有這個。跨度是內聯級別元素,而H2是塊級別。內聯元素不能包含塊級元素(true至HTML5,您可以將塊級元素包裝到錨點中)

這將驗證,並將工作

0

就可以解決IE第二線的問題第一

h2{} 
h2 span{ float:right;} 

正確的方式在所有瀏覽器

<h2><span>sub content</span> Heading</h2> 

走錯了路IE瀏覽器

<h2>Heading<span>sub content</span></h2>