ie6 filter png a 链接不可点击

问题 

png 24 要想在ie6下显示半透明效果,必须借助ie 的filter 功能。而在filter 节点下的 子节点,如果有a链接,那么点击不会有任何反应。怎样让这种情况下的a链接正常反应呢?

解决思路:

初看了下ie filter 的原理,上述问题产生的原因是 filer 节点下的子节点,z-index 小于filer 节点。那么我们想办法让a便器节点的z-index 大于filter 节点就行

how?

一个元素的z-index 层级,与实际的层级结构并没有关系,z-index 总是去想上寻找,找到第一个position 不为static 的节点,来作为stacking context root。

这样,情况就有两种,

一)filter 节点自身不是定位元素,那么,简单的赋予a 便签定位属性,就可以让a 可点击了(显然a便签z-index 会大于filter,因为a和filter 拥有同一个stacking context root,而a在filter之后定义的)

<style>
.filter{
_background:none;
 _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="https://www.baifubao.com/resource/global/images/logo.png",sizingMethod='scale');width:100px;height:100px;
}
.filter a{position:relative;display:block;width:100px;height:100px;}
</style>
<div class="filter">
    <a href="www.baidu.com">百度一下</a>
</div>


二)filter 节点自身是定位元素,那么子节点的层级,不可能超越filter 节点的层级。解决办法是把filter 节点拆解为两个div节点,外面的节点赋予定位属性,里面的节点使用filter特性,这样a便签再使用定位属性,就可以让自己的z-index 属性高于图像的那个节点了

<style>
.filterWrap{
    position:relative;
    width:100px;
    height:100px;
}
.filter{
 _background:none;
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="https://www.baifubao.com/resource/global/images/logo.png",sizingMethod='scale');width:100p;height:100px;
}
.filter a{position:relative;display:block;width:100px;height:100px;}
</style>
<div class="filterWrap">
    <div class="filter">
        <a  href="www.baidu.com">百度一下</a>
    </div>
</div>



参考:

http://bbs.blueidea.com/thread-2956285-1-1.html

http://www.ipmtea.net/css_ie_firefox/201106/11_466.html


你可能感兴趣的:(ie6 filter png a 链接不可点击)