2011-12-25 64 views
5

我想要一个透明的背景色,我使用渐变过滤器作为IE中的RGBA后备。该代码是这样的:IE渐变过滤器没有响应点击事件

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

我也想触发当用户点击背景的事件,但它好像在我设定的过滤器的Click事件不会被触发。没有过滤器,一切都可以。

那么它是另一个IE错误?我该如何解决这个问题?

+0

我希望你知道IE DX过滤器使用#AARRGGBB而不是#RRGGBBAA? – 2011-12-25 12:19:45

+0

是的,我有。透明效果效果很好。问题是我应用过滤器后无法触发点击事件 – bububut 2011-12-25 12:25:35

+0

好,我只是确保你做到了。 (当我第一次遇到它时,它不知道我发现了。)我想如果我已经适当地关注了你的问题的形式,我会看到你在做什么。我几天前想到了完全相同的技术......您发现的一个有趣的问题,如果我使用它,可能会为我节省时间! – 2011-12-25 12:40:20

回答

6

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

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

1

这不是交易。 Internet Explorer会在放置在元素上方的单独图层上创建滤镜,并且由于新图形图层不是该元素的一部分 - 您将点击事件放在该图元上 - 因此不会有事件冒泡。

最近,我为IE制作了一个带有很好渐变过滤器的标签元素。只有文字可以点击。如果我从具有和不具有渐变图层的侧面分析标签图层,那么您会理解该问题。

without gradient filter: 

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


with gradient filter: 

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

顺便说一句,这是什么原因,为什么你不能把一个边界半径上的梯度过滤器了。尝试一下。创建一个元素,并使用border radius对其进行设置,并为其设置渐变过滤器,然后在IE 9中运行它。无论您如何强制渐变保留在圆形边框内 - 例如overflow:hidden - ,它都不会遵守。它就像一个单独的元素,它被定位在绝对位置上方,正好位于您的元素上方,以便在文本下面覆盖它。