我是一个很少使用IE滤镜,也是一个不赞成使用IE滤镜的前端工程师。不过今天有一个朋友给我发来了一个有关于IE6的BUG,就是在IE6中使用了AlphaPNG透明的IE滤镜之后,a链接不能够点击。
具体情况是这样的:在IE6下使用DXImageTransform.Microsoft.AlphaImageLoader滤镜,然后IE6中的a链接就变得不可点击。这里的a链接不是死掉了,也不是属性脱失了,只是有可能单纯的某一个层被挡住了, 所以不能点击。一般遇到这种问题的解决办法就是给a链接添加position:relative;属性。
但是这样做有一个弊端,就是如果我们在使用了滤镜容器的容器中加上绝对定位,a标签上加相对定位的属性(position:relative;),那么a链接依然不能够点击。
怎么样才能做到最好??
或许我们可以这样:就是为使用了滤镜的容器的外层添加一个容器,并且对这个容器进行绝对定位,然后给a链接添加position:relative;属性,这样的话就可以做到既不影响滤镜效果,又可以兼容a链接的点击效果了。
还有一种更加优秀的解决办法就是给a链接添加一个空的背景图或者透明的背景图。
具体代码是:a {background:url(#);/*或指向透明的gif图片*/}
我并不能向你解释为什么这种方法可以解决这个IE6BUG,如果你迫切的想知道答案的话请关注原作者的文章:No Transparency Click Bug。
至于为什么在使用了IE滤镜之后会出现a链接不能点击,我想唯一能够解释的通的原因就是DXImageTransform.Microsoft.AlphaImageLoader滤镜可能改变了容器的层级,那么a链接似乎就被隐藏起来了,当然不能点击的到,而定位属性也能改变元素层级,所以对a链接使用定位属性,a链接就又出现了,就能够点击了。