我想要一个透明的背景色,我使用渐变滤镜作为IE中RGBA的后备。代码是这样的:
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bfffffff,endColorstr=#bfffffff);
我还想在用户点击背景时触发事件,但似乎在设置过滤器后没有触发click事件。没有过滤器,一切都很好。
这是另一个IE漏洞吗?我该如何解决这个问题呢?
答案 0 :(得分:6)
这可能与使用透明背景的链接不再可点击的IE错误有关:我今天遇到过它。我有一个透明背景和显示设置为阻止的链接:链接的主要区域不可点击,但我设置的10px边框是。 IE似乎也有过滤器问题。
讨论了here和here这类错误。第一个人的解决方案是在设置过滤器之前为元素提供假背景图像。第二个人是给元素一个背景颜色,并将不透明度设置为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中运行它。无论您如何尝试强制渐变保持在圆形边框内 - 例如溢出:隐藏 - ,它将永远不会遵守。它就像一个单独的元素,位于元素的正上方,在文本的正下方覆盖它。