被透明元素遮挡的元素还可以被点击到吗?

遮挡
关于是否被遮挡的判断,可以从对层叠级别的判断而确定。见:说说标准——CSS核心可视化格式模型(visual formatting model)之十三:分层的显示(Layered presentation)

透明
一个元素被某个元素遮挡,可以透过遮挡元素完全看到被遮挡元素,那么,可以说遮挡元素是完全透明的。       
让元素完全透明有两种方式:   
   1. 背景色为'background-color:transparent'。设置背景色为透明,如 'background-color:transparent'。事实上 'background-color' 的默认值即为 'transparent';这种是背景默认颜色,未设置的背景都是这个值。
   2. 背景是图片或某种颜色。这时,可以采用 'opacity:0'(标准),或采用滤镜 'filter:alpha(opacity=0)'(仅 IE 支持)。

各位童鞋可以试试看哈,透明!

被透明物遮挡
理论上讲,被透明物遮挡就好像在那个元素上垫了一层超干净的玻璃,可以看,但不可以摸。
也就是说,如果一个元素被另一个元素遮盖后,不论遮盖元素的背景色是否是 'transparent',也不论遮盖元素的透明度是否为全透明,被遮盖元素是不能响应用户的鼠标事件的。
A 被 B 覆盖,A 就被 B 隔离了,鼠标的小手就摸不到A了。
呃,,因为有IE,所以,我只能说:按道理讲是这样的……

实例
'background-color:transparent'的透明方式

<style type="text/css">
    body {
       margin: 30px;
    }
 
    a {
       color: blue;
    }
 
    a:hover {
       color: red;
    }
</style>
 
<div>
    <a href="javascript:void(0);"
      onmouseover="this.style.backgroundColor='yellow'"
      onmouseout="this.style.backgroundColor='transparent'">
       please put your mouse on
    </a>
 
    <div style="height:20px; width:190px; margin-top:10px; background-color:blue;"
        onmouseover="this.style.backgroundColor='red'"
        onmouseout="this.style.backgroundColor='blue'"></div>
    <div style="background-color:transparent;position:absolute;left:10%;top:23px;
                   border:10px solid green;width:100px;height:80px;"></div>
</div>

大家可以自行实验一下,点一下被绿色的框筐套住的文字 和 那段蓝色的 DIV。看看IE的神奇之处。
截图:
[img=https://lh4.googleusercontent.com/m6lkGqXWCRU6JkJ0MFT3hMOjsFvdyRJbLHMpN7FMfkrxVIJoyx-omyxYYfsVMgmBBaAHtRJaUMaUjU0kTrMJ_hhCWK6mLcoJ3HmOwW6Xq0worQhxiQ][/img]
详细的效果图,看原文中问题分析部分2.1的截图:[http://www.w3help.org/zh-cn/causes /BT9029#analysis_of_issues]http://www.w3help.org/zh-cn/causes/BT9029#analysis_of_issues[/url]
'opacity' 或 'filter:alpha' 为0的透明方式

 

<style type="text/css">
body{margin:0;}
a{color:blue;}
a:hover{color:red;}
</style>
<div style="position:relative;margin:50px;width:300px;">
  <a href="javascript:void(0);"
          onmouseover="this.style.backgroundColor='yellow'"
          onmouseout="this.style.backgroundColor='transparent'">
          please put your mouse on
  </a>
  <div style="height:20px; width:190px; margin-top:10px; background-color:blue;"
          onmouseover="this.style.backgroundColor='red'"
          onmouseout="this.style.backgroundColor='blue'"></div>
  <div style="opacity:0;filter:alpha(opacity=0);background-color:green;
                  position:absolute;left:10%;top:-23px;
                  border:10px solid green;width:100px;height:80px;"></div>
</div>

 

这时候,整个元素透明了,所以,连border也看不到了。各位同学可以自己点点看,被遮盖的分界处在 please 的a和s之间。
[img=https://lh4.googleusercontent.com/Qs5qVxeUNufMzCGzXLv8Ycopw-iBpimeb52yAItyqAyKpzhmPwvxMXa8eY0sb0Cou-j6BIVghhOUthXGeGCB8QPTVkDmhmNe1lElUZySifNNQaJPyw][/img]
详细的效果图,看原文中问题分析部分2.2的截图:[http://www.w3help.org/zh-cn/causes /BT9029#analysis_of_issues]http://www.w3help.org/zh-cn/causes/BT9029#analysis_of_issues[/url]

结论
在 IE6 IE7 IE8 下,当遮挡元素的 'background-color' 为 'transparent' 时,其下被遮挡的行内元素可响应鼠标事件,而块级元素则不能。而在其它浏览器下,被遮挡的元素都无法响应鼠标事件,无论它是块级元素还是行内元素。

解决方案
参照:http://www.w3help.org/zh-cn/causes/BT9029 的解决方案部分

解决方案原文
http://www.w3help.org/zh-cn/causes/BT9029 

更多兼容性问题:
【分享】浏览器兼容性问题目录

 

 

原文链接 > https://bbs.csdn.net/topics/350040973   

 

 

 

在Java中解决元素层级被遮挡的方法有多种。以下是一些常见的方法: 1. 使用布局管理器(Layout Manager):Java提供了多个布局管理器,可以根据需要选择适合的布局来处理元素的层级关系。布局管理器可以自动处理元素的位置和大小,确保元素不会互相遮挡。 2. 调整组件的位置和大小:可以通过修改组件的坐标和尺寸来调整元素的层级关系。可以使用setBounds()方法或者其它相关的方法来实现。 3. 使用透明度(Opacity):通过设置组件的透明度,可以实现元素之间的覆盖和透明效果。可以使用setOpaque()方法将组件设置为透明,然后使用setAlpha()方法设置透明度的值。 4. 使用图层(LayeredPane):使用JLayeredPane可以创建多个图层,每个图层上可以放置一个或多个组件。通过调整图层的顺序,可以改变元素的层级关系。可以使用add()和setLayer()方法来添加和移动组件到不同的图层上。 5. 使用重叠窗体(Dialog):可以使用Java的对话框(Dialog)功能来实现元素之间的层叠效果。对话框可以有不同的层级,可以通过修改对话框的模态性和焦点来控制元素的层级关系。 6. 使用JavaFX:如果使用JavaFX来开发界面,可以使用StackPane来处理元素的层级关系。StackPane可以通过设置每个子组件的对齐方式和层级来控制元素的显示和遮挡关系。 总之,Java中有多种方法可以解决元素层级被遮挡的问题,具体方法的选择取决于具体的需求和实现方式。以上提到的方法仅供参考,开发者可以根据实际情况选择合适的方法来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值