我有时会通过在其顶部放置一个透明 div 来“保护”自定义 UI 控件。例如,我制作了一个交互式数据网格,当我想禁用它时,例如当我在它前面弹出一个对话框时,我将一个透明的 div 附加到网格的外部容器中,并拉伸了高度和宽度,以便它不可能点击任何东西。在下面的人为示例中,someFunction()
单击“Blah”所在的位置时不会被调用,因为跨度将被透明保护器覆盖。
HTML:
<div class="control">
<span class="clickable-example" onclick="someFunction()">Blah</span>
<div class="protector"></div>
</div>
CSS:
.control {
position: absolute;
width: 100px;
height: 20px;
}
.clickable-example {
z-index: 0;
}
.protector {
position: absolute;
left: 0;
top: 0;
width: 100px;
height: 20px;
z-index: 1;
background: transparent;
}
但是,我注意到在 Internet Explorer(甚至 10)中,这不起作用。似乎背景设置为透明的 div(使用 CSS 显式设置,或者根本不设置它隐式设置),div 不会阻止它下面的内容。我认为这是错误的,但我实际上无法从规范中看出它是错误的。规范只是说下面的东西会“发光”。它没有说背景是否应该像一块玻璃。
我已经恢复使用完全透明的图像而不是透明的 div,但我想知道是否有人对此有任何进一步的信息。(它与透明图像一起工作的事实证明这不是 z-index 问题)。