2011-10-06 136 views
-2

這裏有一個問題,你所有的專家在那裏。IE5.5過濾器 - 爲什麼過濾器:漸變(屬性)不可用,而過濾器:alpha(屬性)是?

當IE5.5推出,就想出了一個範圍的新的過濾器,如:

IE的
filter:progid:DXImageTransform.Microsoft.Gradient(sProperties). 

後來的版本支持用於使alpha透明度較短方法:

filter: alpha(opacity = 50); 

有沒有人有一個很好的解釋,至於爲什麼IE不支持漸變的更短的方法,例如filter: gradient(startcolor, endcolor)

+0

IE8用'-ms-filter'替換了'filter',並帶回了長格式。 IE9完全棄用'過濾器'來支持CSS3標準。 – Spudley

回答

1

整個filter風格是微軟和IE專有的,從未受到任何外部標準化過程的影響。

因此,語法的選擇以及支持與否的內容完全取決於微軟的心血來潮。

值得了解filter:progid:....語法的一件事是,由於progid之後的冒號,它是無效的CSS。我曾見過這種語法實際上在其他瀏覽器中導致嚴重的解析錯誤的情況。 (在一種情況下,Firefox 3.6在遇到輪換後拒絕解析樣式表中的更多內容filter

這類問題可能是提供更短替代語法的動機的一部分,因爲這些問題至少在語法上是有效的CSS,儘管它沒有解釋爲什麼他們會爲某些過濾器而不是爲所有過濾器完成它。

除此之外,沒有什麼好的理由讓我知道他們爲什麼選擇提供一些filter風格的快捷方式,而不是其他人。也許他們決定只爲那些受歡迎的人使用它?但無論做出決定的原因是什麼,這些簡短的風格只適用於IE6和IE7,而且它們在遙遠的過去,現在只是具有歷史意義。

在IE8中,他們用-ms-filter替換了filter,並回到了樣式的漸變版本,並添加了將值包含在引號中的要求(從而解決了上面描述的無效CSS問題)。

隨着IE9,整個問題變得沒有實際意義,因爲他們完全放棄了filter風格,並且實現了標準的CSS3替代方案。

如果您嘗試使用filter樣式,尤其是漸變樣式,我強烈建議您查看一些工具,如CSS3Pie,這是一個Javascript包裝器,旨在允許IE6-8支持漸變的CSS3標準樣式等。這允許您編寫您的CSS代碼而無需使用非標準的僅限IE的過濾器。其他類似的工具存在其他過濾器樣式。