2011-04-18 67 views
3

我使用下面的代碼,但現在我不知道我是否需要使用這兩種:都是-ms-過濾器和過濾器用於IE中的漸變?

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#46494F', endColorstr='#141A1E',GradientType=0); 

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#46494F', endColorstr='#141A1E',GradientType=0)";} 

什麼使我更加困惑的是,VS2010報告以下信息:「驗證CSS 2.1 - 過濾器不是已知的屬性名稱。「

有沒有人使用過這些類似的問題?如何使用IE9及以上版本?這些仍然使用或者是使用新CSS標準的瀏覽器嗎?

希望有人比我知道這件事。

感謝,

回答

2

filter-ms-filter是由微軟於僅IE專有的CSS屬性,所以驗證消息是不是一個問題。

filter用於IE大於8的IE,而IE8 +採用前綴版本-ms-filter

+0

我不知道整個故事,但我知道'過濾器'(也)在IE8中的作品。有任何想法嗎? http://jsfiddle.net/UPuPR/ – thirtydot 2011-04-18 15:32:14

+0

@thirtydot:這就是我發現的,但我不知道它是否與OP報告中的Visual Studio警告有關。也許Visual Studio忽略供應商前綴(無論如何它們都是非標準的),所以微軟決定走這條路。 – BoltClock 2011-04-18 15:33:00

+0

謝謝。新款瀏覽器如IE9如何?該瀏覽器是否仍然使用-ms-filter或將其更改爲與CSS3一致? – Hiroki 2011-04-18 15:33:14

1

在IE8中Microsoft替換filter-ms-filter的原因是因爲他們需要對其進行不兼容的語法更改。

-ms-filter允許您將整個過濾器字符串換成引號,而較舊的filter樣式則不能。

這很重要,因爲很多過濾器都包含字符串,例如progid:(由於冒號導致CSS無效)。在filter樣式中包含這些過濾器,如果沒有引號,可能會導致其他瀏覽器在整個樣式表上窒息。

IE9完全支持filter-ms-filter。如果你想在IE9中使用這些效果,你必須使用標準的CSS3。

+0

部分正確;它*是*無效的CSS。更正:他們用'-ms-filter'取代'filter'的原因是要符合CSS 2.1 - **所有**專有擴展都成爲供應商的前綴,'-ms-behavior','-ms-scrollbar-'等等。在CSS中,無效規則將被忽略,由於單個屬性值包含額外的':',因此瀏覽器不應該「扼殺整個樣式表」。 – 2011-04-18 15:54:40

+0

@Ande E - 當我使用旋轉元素時,Firefox 3.6遇到了一個'progid:'過濾器窒息。過濾器後FF忽略所有樣式。唯一可行的解​​決方案是將過濾器樣式作爲CSS文件中的最後一種樣式,或將其移至特定於IE的CSS文件。 '-ms-filter'很好,因爲它可以用引號括起來,但是'filter'不能修復。 – Spudley 2011-04-18 15:58:16

+0

我不懷疑一個或兩個解析器可能在IE過濾器上窒息,但這確實是解析器的錯誤,因爲它是錯誤的,並且在錯誤的地方冒着冒號。這就是爲什麼我使用* should * :-)這個詞的原因。我也不會否認切換到供應商前綴提供了修正語法的機會,但真正的原因是CSS 2.1兼容吹牛權利(爲此需要正確的語法和供應商前綴)。你可以在[博客]上看到自己(http://blogs.msdn.com/b/ie/archive/2008/09/08/microsoft-css-vendor-extensions.aspx)。 – 2011-04-18 16:08:27