2011-04-18 33 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

相关问题