`
zhouyrt
  • 浏览: 1162174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • BUG
阅读更多

有时需要用绝对定位元素去遮盖其它元素。多数时候没有什么问题。如果被遮盖的元素添加了鼠标事件(如点击事件),各浏览器下表现则不太一样了。

 

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

 

.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的点击事件。如下:

 

<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点击事件,如下:

 

<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点击事件,如下:

 

<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

 

 

 

分享到:
评论

相关推荐

    绝对定位元素被遮挡的解决方法

    为了解决绝对定位元素被遮挡的问题,需要对绝对定位元素的父元素设置z-index值,即使是1,只要这个值高于所有可能遮挡该元素的其他相对定位元素的z-index值,就可以保证绝对定位元素在层级上处于上层。这样做的目的...

    IE7中绝对定位元素之间的遮盖问题示例探讨

    `relative`定位表示元素相对于其正常位置进行定位,而`absolute`定位则将元素相对于最近的非静态定位祖先元素定位。在IE7中,当两个绝对定位的子元素位于具有相对定位的同一层级的父元素中时,可能会发生预期之外的...

    如何解决IE6/7绝对定位元素神秘消失或被遮挡的方法

    在这种情况下,看似下面的层遮盖了绝对定位的子元素,实际上,它是遮盖了绝对定位子元素的父级层。解决这个问题的关键是将父级层的z-index设置为大于后面所有层的值,这样就能确保绝对定位元素在正确的层级上显示。 ...

    解决IE6,IE7不能隐藏(overflow:hidden)绝对定位溢出的内容

    令人蛋疼的IE,IE6/IE7下父元素有相对/绝对定位时,子元素在IE6和IE7下overflow:hidden;失效。 情况一:(在parent上增加position:relative) 复制代码代码如下: &lt;style type=”text/css”&gt; .parent{ width:...

    Jquery做的遮盖层

    1. **HTML结构**:在HTML中添加一个用于遮盖层的`&lt;div&gt;`元素,通常设置为绝对定位并将其放置在所有内容之上。例如: ```html &lt;div id="overlay"&gt;&lt;/div&gt; ``` 2. **CSS样式**:为`#overlay`分配适当的CSS样式,如...

    网页Object标签遮盖DIV标签解决方法

    3. **使用绝对定位**: 如果需要更精确地控制元素的位置,可以使用`position: absolute`或`position: fixed`。这样可以将元素从文档流中移出,并相对于最近的非静态定位祖先元素进行定位。 4. **调整`&lt;Object&gt;`的`...

    单击弹出遮盖层

    为了使遮盖层占据整个屏幕,我们可以使用百分比宽度和高度,并设置定位为绝对或固定。同时,设置`z-index`属性确保遮盖层位于其他元素之上。对于透明度,可以调整`opacity`或使用`rgba()`颜色值。一个基本的CSS样式...

    遮盖效果

    例如,通过设置元素的`position`为`absolute`或`fixed`,并调整`z-index`来控制元素的层次关系,使其覆盖在其他元素之上。同时,利用`opacity`和`background-color`属性可以创建半透明效果。 2. **JavaScript/...

    动画ppt之遮盖效果

    为了使遮盖效果更佳,我们还可以结合其他动画效果一起使用,如淡入淡出、飞入飞出等,以创造更丰富的视觉体验。同时,合理控制动画的顺序和时间,避免过度的动画导致观众分心。在设计过程中,始终保持简洁和专业,...

    css遮盖层

    /* 设置较高的堆叠顺序,确保遮盖层位于其他元素之上 */ } ``` 在这个例子中,`position: fixed`让遮盖层相对于浏览器窗口定位,而`top`, `left`, `width` 和 `height` 设置为0和100%使得遮盖层覆盖整个屏幕。`...

    图片遮盖涂抹.rar

    4. **颜色替换**:对于遮盖涂抹,有时需要将特定颜色替换为其他颜色或渐变。源码可能包含查找特定颜色并替换的逻辑,或者使用颜色映射表进行转换。 5. **用户交互**:在软件开发中,用户界面(UI)的设计也非常重要...

    flex解决JSP遮盖

    6. **重新设计布局**:在某些情况下,重构页面布局可能是更佳选择,比如使用绝对定位或浮动布局,以避免元素之间的重叠。 综上所述,解决"flex解决JSP遮盖"的问题需要理解CSS的Z-index工作原理,熟悉IFrame的特性,...

    javascript写的页面遮盖层,可根据具体情况自己设定或改写

    1. **创建遮盖层**:在页面上生成一个全屏的透明或者半透明元素,覆盖整个网页内容,从而阻止用户与页面的其他部分交互。 2. **显示和隐藏**:根据需求,可以随时显示或隐藏遮盖层,比如在开始一个长时间运行的操作...

    android控件放大被遮盖已解决

    然而,当一个控件放大后,可能会超出其原本的布局边界,导致被其他控件遮盖,这无疑会给用户界面带来困扰。"android控件放大被遮盖已解决"这个主题就是针对这一问题的解决方案。 首先,我们需要理解Android的布局...

    超好用的Jquery弹出框和遮盖层

    通常,遮盖层是一个全屏的透明div,而弹出框可以是任意形式的HTML元素,如div、form或者其他。 ```html &lt;div id="overlay" class="overlay"&gt;&lt;/div&gt; 弹出框标题 这里是弹出框的内容... 关闭 ``` 2. **CSS样式*...

    学外语必备-电影字幕遮盖软件

    标题中的“学外语必备-电影字幕遮盖软件”指的是一个专为外语学习者设计的工具,特别是针对那些希望通过观看电影来提升英语水平的人。这个软件的独特之处在于它能够遮盖电影字幕,帮助用户专注于听语言,提高听力...

    JS+CSS遮盖层

    JS+CSS遮盖层,完全支持ie等主流浏览器,并解决在ie6下无法遮盖窗口级控件问题。

    超酷的全屏遮盖显示图片效果

    在网页设计中,视觉效果是吸引用户注意力的关键因素之一,"超酷的全屏遮盖显示图片效果"正是一种能够提升用户体验的创新技术。这种效果通常用于网站的开场动画、背景展示或者产品介绍等场景,它能够让图片以一种独特...

Global site tag (gtag.js) - Google Analytics