IE CSS Bug系列:32樣式限制

rubyisapm發表於2013-10-28

伯樂線上導讀:IE 瀏覽器不支援很多 CSS 屬性是出了名的,即便在支援的部分中,也是有很多 Bug 的。Zoffix Znet 整理了 IE 中的 CSS 問題,有簡單的問題示例,也有解決方法。 這個系列共有 58 個指南,70 個解決方案。這篇由伯樂線上前端開發小組的 @rubyisapm 翻譯。(歡迎更多前端開發朋友來加入“前端開發小組。)

【提示】:IE CSS BUG 系列譯文正在進行中,後續或有改動和調整,請不要轉載本系列的譯文。

—————————————————————————–

32樣式限制

受影響的版本

IE6IE7IE8(譯者注:在IE9中切換瀏覽器版本為789均出現此bug,在IE11中切換瀏覽器版本均沒有出現該bug,這個…..僅供參考)

 

表現

排在第32個(及之後的)樣式會被忽略(例如<style><link>@import

教程日期

2009 8.12 14:58:58 星期三

描述

如果你正在維護一個網站,裡面包含了很多第三方的廣告或應用程式,這些第三方的東西會依賴於他們自己的<style>(<link>)元素,本文中的bug就會令你抓狂…..我這裡說的很多意思是32個。讓我們來看看下面的演示,然後我再解釋。

 

演示

由於該bug的天然特性,這個演示在一個單獨的頁面上:

HTML Code

 

首先,儘管我在示例中用了32個<style>元素,<link>元素和表單中連結的@import url()一樣會受到這個限制的影響;所有這些元素可以疊加產生32個style的限額(雖然@import的極限貌似是35)。(譯者注:據自測,@import形式的引入樣式限制也是32

在演示中,第32<style>元素設定了<p>元素的邊框,在IE中,除非你刪掉這個之前的某些<style>元素,不然P元素是不會被設定邊框的。

 

解決方案

以下是針對此bug的解決方案

方案(偽bug)

 

教程日期

2009 8.12 15:28:11 週三

 

修復版本

所有受影響的版本

描述

如果你在實際網站開發中遇到了這個問題,你也許不能選擇用“更少的樣式標籤”,解決方案可能會變得更復雜。基於那個事實,在修正的演示中,我會展示達到限制條件的情況:

 

由於該bug的天然特性,這個演示在一個單獨的頁面上:(譯者注:此處的頁面連結有錯誤,跟前一個演示連結是一樣的,明顯和下面的html程式碼不符)

HTML 程式碼:

如果你不能採取“使用更少的樣式標籤”的解決辦法,問題就會變得更復雜。最好的方案就是採用一個後處理,將超量的樣式進行合併放入一個style裡(如將多個<style>元素中的樣式放入一個<style>元素中)。

如果<style>元素中的內容是靜態的,你可以簡單地複製程式碼並將它放在限制標籤前面的<link>/<style>元素中。

如果你已經火燒眉毛,需要一個快速修復方法的話,下面是我在the page where I found the bug找到的一段jQuery程式碼,我沒有測試過這段程式碼,所以使用者風險自負哦~程式碼是這樣的:

 

請注意,你不應使用這段程式碼作為此問題的永久性修復方案。

相關文章