职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 458|回复: 3

绝对定位元素遮盖其它元素的bug

[复制链接]
ksdal 发表于 2011-7-30 09:39 | 显示全部楼层 |阅读模式
有时需要用绝对定位元素去遮盖其它元素。多数时候没有什么问题。如果被遮盖的元素添加了鼠标事件(如点击事件),各浏览器下表现则不太一样了。

1,绝对定位元素(未设置background)遮住Input元素,只在IE/Opera中,Input的点击事件能触发。如下代码

Html代码  
.container{   
    width:200px;   
    height:100px;   
    border:1px solid red;   
    position:relative;   
}   
<div class="container">  
    <input type="button" value="click me" onclick="alert('clicked');"/>  
    <div style="filter:alpha(opacity=30);opacity:0.3;   
                border:1px solid gold;position:absolute;   
                top:0;left:0;width:100px;height:50px;">  
    </div>  
</div>  

.container{
        width:200px;
        height:100px;
        border:1px solid red;
        position:relative;
}
<div class="container">
        <input type="button" value="click me" onclick="alert('clicked');"/>
        <div style="filter:alpha(opacity=30);opacity:0.3;
                                border:1px solid gold;position:absolute;
                                top:0;left:0;width:100px;height:50px;">
        </div>
</div>

Div[class=container] 中有子元素Input,其添加了鼠标单击事件;另一个子元素Div设置了绝对定位,top,left都为0。这样就遮盖住了Input元素。这是点击Input,看看各浏览器中的表现:
IE6/7/8/Opera Firefox/Safari/Chrome
点击Input[value=click me]弹出提示框:clicked不弹




很奇怪,IE6/7/8/Opera 中虽然绝对定位的div盖住了input,但点击input,仍然能触发其点击事件。而Firefox/Safari/Chrome 则不会触发。

2,绝对定位元素(设置background)遮住Input元素,所有浏览器中均无法触发Input的点击事件。如下:

Html代码  
<div class="container">  
    <input type="button" value="can't click me" onclick="alert('clicked');"/>  
    <div style="filter:alpha(opacity=30);opacity:0.3;   
                border:1px solid gold;position:absolute;   
                top:0;left:0;width:100px;height:50px;background:yellow;">  
    </div>  
</div>  

<div class="container">
        <input type="button" value="can't click me" onclick="alert('clicked');"/>
        <div style="filter:alpha(opacity=30);opacity:0.3;
                                border:1px solid gold;position:absolute;
                                top:0;left:0;width:100px;height:50px;background:yellow;">
        </div>
</div>  
这时候在所有浏览器中点击input都无法触发其点击事件,也不会弹出clicked。

3,相对定位的元素(未设置背景色)能盖住绝对定位的元素,也只在IE/Opera中能触发Input点击事件,如下:

Html代码  
<div class="container">  
    <input type="button" value="click me" onclick="alert('clicked');" style="position:absolute;"/>  
    <div style="filter:alpha(opacity=30);opacity:0.3;   
                border:1px solid gold;position:relative;   
                width:100px;height:50px;">  
    </div>  
</div>  

<div class="container">
        <input type="button" value="click me" onclick="alert('clicked');" style="position:absolute;"/>
        <div style="filter:alpha(opacity=30);opacity:0.3;
                                border:1px solid gold;position:relative;
                                width:100px;height:50px;">
        </div>
</div>  
4,相对定位的元素(设置背景色)能盖住绝对定位的元素,所有浏览器中均无法触发Input点击事件,如下:

Html代码  
<div class="container">  
    <input type="button" value="can't click me" onclick="alert('clicked');" style="position:absolute;"/>  
    <div style="filter:alpha(opacity=30);opacity:0.3;   
                border:1px solid gold;position:relative;   
                width:100px;height:50px;background:gray;">  
    </div>  
</div>  

<div class="container">
        <input type="button" value="can't click me" onclick="alert('clicked');" style="position:absolute;"/>
        <div style="filter:alpha(opacity=30);opacity:0.3;
                                border:1px solid gold;position:relative;
                                width:100px;height:50px;background:gray;">
        </div>
</div>  

测试浏览器版本如下:
IE6/7/8
Opera 10.10
Firefox 3.5.6
Safari 4.0.3
Chrome 4.0.266.0






紫衿 发表于 2011-7-30 09:39 | 显示全部楼层
推荐链接
【推荐】java 新手是如何获得“8K月薪”的?
年薪100万诚邀IT讲师



fl 发表于 2011-8-10 10:44 | 显示全部楼层
支持你一下下。。
能文能武 发表于 2011-8-15 09:12 | 显示全部楼层
好吧...那你说...
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-4 15:03 , Processed in 0.124220 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表