所以,我打算为我的网站制作一个重叠的东西,其中一个元素固定在网站上并放在一切之上。但这意味着元素背后的其他任何东西都不会受到影响。
这里有JSFiddle再现这个问题。
您会注意到您无法突出显示黑色文字,并且JavaScript事件无法触发。
以下是我用来创建此问题的CSS + HTML:
HTML
<div id="main-container">
<div id="container-content">You can't highlight me! D:</div>
<div id="container-fixed"><div style="margin:90px auto;background:red;width:40px;height:40px;"></div>You cannot highlight the text behind this DIV. It also doesn't fire click events.</div>
</div>
main-container
:这包含内容。
container-content
:这是固定DIV背后的内容
container-fixed
:这是DIV重叠&#34;容器内容&#34;
CSS
#main-container {
width: 90%;
margin: 5%;
position: relative;
height: 500px;
overflow: auto;
}
#container-content {
width: 100%;
height: auto;
}
#container-fixed {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
color: red;
}
我努力实现的目标是什么?允许使用CSS和JavaScript(jQuery)答案。
答案 0 :(得分:9)
使用CSS pointer-events
:
除了指示该元素不是鼠标事件的目标之外,值none指示鼠标事件“穿过”该元素并将目标转移到该元素的“下面”。
#container-content {
width:100%;
height:auto;
pointer-events: none;
}
如果您需要支持IE 10及更低版本,则需要polyfill。
答案 1 :(得分:3)
这应该可以解决问题:
#container-fixed{
pointer-events: none;
}
pointer-events: none;
禁用目标元素上的鼠标互动
请记住,11版之前的IE版本不支持此CSS属性。
答案 2 :(得分:1)
对于IE10&gt;在浏览器中,您必须计算要通过更高级别元素单击的元素的位置,然后执行您想要执行的操作。例如http://jsfiddle.net/hm6Js/7/
topo=$('#container-content').offset().top;
left=$('#container-content').offset().left;
right=$('#container-content').offset().left+$('#container-content').width();
bottom=$('#container-content').offset().top+$('#container-content').height();
$(document).click(function(e){
if(e.pageX>=left && e.pageX<=right && e.pageY>=topo && e.pageY<=bottom){
alert("This doesn't work.");
}
});
正如您在此示例中所看到的,警报仅在您单击#container-content
元素时触发。
注意:强>
如果您想要点击很多元素,那么这不是最有效的方式。
答案 3 :(得分:0)
您可以使用css指针事件执行此操作。
将#container-content
的css更改为此
#container-content{
width:100%;
height:auto;
}
#container-fixed {
width:100%;
height:100%;
position:absolute;
top:0; left:0;
color:red;
pointer-events: none /*the important thing*/
}
工作小提琴here
可以找到指向事件更多信息的链接here 这可能不是跨浏览器,所以另一个家伙建议如果这是一个问题)使用javascript,通过图层转发鼠标事件。完整答案可以找到here
答案 4 :(得分:-3)
您可以通过添加z-index
#container-content {
width:100%;
height:auto;
z-index:999;
position:absolute;
}