【问题标题】:When using style.filter in browser ie6,ie7,ie8 doesn't work在浏览器 ie6,ie7,ie8 中使用 style.filter 时不起作用
【发布时间】:2012-11-10 04:28:10
【问题描述】:

我在(ff、chrome 等)浏览器中使用style.opacity
在 (ie6,7,8) 中,我正在使用 style.filter 但不起作用。

以下是我所做的:

targetElement.style.filter = 'alpha(opacity=30)'; // targetElement is div

之前的代码仅在 ie9 中可以正常工作,但在 ie6,7,8 中不能正常工作。为什么?

【问题讨论】:

  • 这到底是什么意思? DIV 中有哪些元素? alpha(opacity=30) 即使在 IE5 中也可以工作,所以发生了一些奇怪的事情,请发布更多代码。
  • 问题:鉴于 IE9 支持标准的opacity 样式,您确定在 IE 中运行的不是您的标准代码而不是过滤器吗?我看不出过滤器在 IE9 中运行但在其他 IE 中不起作用的任何理由,但如果它一直失败但您的 style.opacity 在 IE9 中运行,那么事情就更有意义了。
  • 我不得不说我从未尝试过使用 Javascript 设置过滤器样式。这似乎总是太麻烦了(尤其是围绕filter 风格的固有怪癖)。它确实有效:jQuery 能够使用它在 IE 中淡入淡出元素,但这仍然很麻烦。我的建议:如果您简单地将不透明样式放入 CSS 类中,并使用 Javascript 更改类名,事情会变得容易得多。

标签: javascript css internet-explorer


【解决方案1】:

据我所知,IE 6 和 7 没有 alpha 透明度过滤器。您可以通过为开始和结束设置相同的颜色来使用渐变过滤器作为解决方法/hack。 MS 渐变滤镜可以处理具有 alpha 透明度的 RGB。

半透明,近乎黑色的背景(alpha 通道是前两个十六进制数字):

filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=#E5333333, endColorstr=#E5333333 );
-ms-filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=#E5333333, endColorstr=#E5333333 );

【讨论】:

  • 不,过滤不透明度即使在较旧的 IE 中也始终有效。无论如何,这里的问题不在于 OP 显然熟悉的过滤器样式本身,而是通过 Javascript 设置它。
猜你喜欢
  • 2011-09-28
  • 2015-07-31
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多