IE渐变过滤器不响应click事件

时间:2011-12-25 12:15:55

标签: css internet-explorer

我想要一个透明的背景色,我使用渐变滤镜作为IE中RGBA的后备。代码是这样的:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bfffffff,endColorstr=#bfffffff);

我还想在用户点击背景时触发事件,但似乎在设置过滤器后没有触发click事件。没有过滤器,一切都很好。

这是另一个IE漏洞吗?我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:6)

这可能与使用透明背景的链接不再可点击的IE错误有关:我今天遇到过它。我有一个透明背景和显示设置为阻止的链接:链接的主要区域不可点击,但我设置的10px边框是。 IE似乎也有过滤器问题。

讨论了herehere这类错误。第一个人的解决方案是在设置过滤器之前为元素提供假背景图像。第二个人是给元素一个背景颜色,并将不透明度设置为1%,这将使它在IE中几乎不可见。希望你能够使用其中一种来绕过它。

答案 1 :(得分:1)

这不是交易。 Internet Explorer在单独的图层上创建过滤器,该图层位于元素上方,并且因为新的图形图层不是元素的一部分 - 您点击事件开启 - 所以不会有事件冒泡。

最近我为IE制作了一个带有漂亮渐变滤镜的标签元素。只能单击文本。如果我使用和不使用渐变图层从侧面分析标签图层,那么您将了解问题。

without gradient filter:

------------------
 text layer
------------------
 background layer
------------------


with gradient filter:

------------------
 text layer
------------------
 gradient layer
------------------
 background layer
------------------

顺便说一句,这就是为什么你不能在渐变滤镜上放置边框半径的原因。试试吧。创建一个元素,并使用边框半径为其设置样式并为其提供渐变过滤器并在IE 9中运行它。无论您如何尝试强制渐变保持在圆形边框内 - 例如溢出:隐藏 - ,它将永远不会遵守。它就像一个单独的元素,位于元素的正上方,在文本的正下方覆盖它。