IE5.5过滤器 - 为什么过滤器:渐变(属性)不可用,而过滤器:alpha(属性)是?

时间:2011-10-06 13:06:00

标签: css internet-explorer stylesheet

这是所有专家的问题。

当IE5.5推出时,它附带了一系列新过滤器,例如:

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

IE的更高版本支持更短的启用alpha透明度的方法:

filter: alpha(opacity = 50);

有没有人有一个很好的解释,为什么IE不支持更短的渐变方法,例如filter: gradient(startcolor, endcolor)

1 个答案:

答案 0 :(得分:1)

整个filter样式是Microsoft和IE专有的,并且从未受过任何类型的外部标准化过程。

因此,语法的选择以及支持与否的完全取决于微软的想法。

值得了解filter:progid:....语法的一点是,由于progid之后的冒号,它是无效的CSS。我见过这种语法实际上在其他浏览器中导致严重的解析错误的情况。 (在一种情况下,Firefox 3.6在遇到轮换后拒绝在样式表中进一步解析filter

这类问题可能是提供更短替代语法的动机的一部分,因为这些语法至少在语法上是有效的CSS,尽管它没有解释为什么他们会为某些过滤器而不是为所有过滤器做到这一点。它们。

除此之外,我没有充分的理由知道为什么他们会选择提供一些filter风格的快捷变体,而不是其他风格。也许他们决定只针对流行使用的那些?但无论做出决定的原因是什么,这些简短的风格仅适用于IE6和IE7,而且它们在遥远的过去,现在只是具有历史意义。

使用IE8,他们将filter替换为-ms-filter,然后回到样式的速记版本,并添加了将值包装在引号中的要求(从而解决了我描述的无效CSS问题)上文)。

使用IE9,整个问题变得毫无意义,因为他们完全放弃了filter样式,并实现了标准的CSS3替代方案。

如果您正在尝试使用filter样式,尤其是渐变,我强烈建议您查看CSS3Pie等工具,这是一个Javascript包装器,旨在允许IE6-8支持CSS3渐变的标准样式等,这使您可以编写CSS代码,而无需使用非标准的IE-only过滤器。其他过滤器样式也存在其他类似工具。