【问题标题】:IE5.5 Filters - why is filter: gradient(properties) not available, while filter: alpha(properties) is?IE5.5 过滤器 - 为什么 filter: gradient(properties) 不可用,而 filter: alpha(properties) 可用?
【发布时间】:2011-10-06 13:05:59
【问题描述】:

这是给所有专家的问题。

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

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

更高版本的 IE 支持更短的方法来启用 alpha-transparency:

filter: alpha(opacity = 50);

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

【问题讨论】:

  • IE8 将filter 替换为-ms-filter,并带回了长格式。 IE9 完全抛弃了filter,转而支持 CSS3 标准。

标签: css internet-explorer stylesheet


【解决方案1】:

整个filter风格为微软和IE专有,从未经过任何外部标准化流程。

因此,语法的选择以及是否支持完全取决于 Microsoft。

关于filter:progid:.... 语法值得了解的一点是它是无效的CSS,因为progid 后面有冒号。我见过这种语法实际上在其他浏览器中导致严重解析错误的情况。 (在一种情况下,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 过滤器。其他类似的工具也适用于其他过滤器样式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多