Jim*_*ery 78 html css pointer-events
刚刚pointer-events
在CSS中玩过属性.
我有一个div
我希望对所有鼠标事件都不可见,除了:hover
.
所以所有点击命令都会通过div
它下面的命令,但是div可以报告鼠标是否在它上面.
任何人都可以告诉我是否可以这样做?
HTML:
<div class="layer" style="z-index:20; pointer-events:none;">Top layer</div>
<div class="layer" style="z-index:10;">Bottom layer</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.layer {
position:absolute;
top:0px;
left:0px;
height:400px;
width:400px;
}
Run Code Online (Sandbox Code Playgroud)
Сво*_*Роб 82
仅悬停.这很容易.没有JS ...也防止链接默认操作.
a:hover {
color: red;
}
a:active {
pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)
<a href="www.google.com">Link here</a>
Run Code Online (Sandbox Code Playgroud)
编辑:IE 11及以上版本支持 http://caniuse.com/#search=pointer-events
Nie*_*sol 22
"窃取"Xanco的答案,但没有那个丑陋,丑陋的jQuery.
代码段:注意DIV的顺序相反
.layer {
position: absolute;
top: 0px;
left: 0px;
height: 400px;
width: 400px;
}
#bottomlayer {
z-index: 10
}
#toplayer {
z-index: 20;
pointer-events: none;
background-color: white;
display: none
}
#bottomlayer:hover~#toplayer {
display: block
}
Run Code Online (Sandbox Code Playgroud)
<div id="bottomlayer" class="layer">Bottom layer</div>
<div id="toplayer" class="layer">Top layer</div>
Run Code Online (Sandbox Code Playgroud)
Xan*_*nco 11
我认为单凭CSS无法实现您的目标.但是,正如其他贡献者所提到的,在JQuery中做起来很容易.这是我如何做到的:
HTML
<div id="toplayer" class="layer" style="z-index:20; pointer-events:none; background-color: white; display: none;">Top layer</div><div id="bottomlayer" class="layer" style="z-index:10;">Bottom layer</div>
Run Code Online (Sandbox Code Playgroud)
CSS(未更改)
.layer {
position:absolute;
top:0px;
left:0px;
height:400px;
width:400px;
}
Run Code Online (Sandbox Code Playgroud)
JQuery的
$(document).ready(function(){
$("#bottomlayer").hover(
function() {
$("#toplayer").css("display", "block");
},
function() {
$("#toplayer").css("display", "none");
}
);
});
Run Code Online (Sandbox Code Playgroud)
这是JSFiddle:http://www.jsfiddle.net/ReZ9M
您还可以检测到不同元素上的悬停并将样式应用于其子元素,或使用其他css选择器(例如相邻的子元素等)。
这取决于您的情况。
在父元素上悬停。我这样做:
.child {
pointer-events: none;
background-color: white;
}
.parent:hover > .child {
background-color: black;
}
Run Code Online (Sandbox Code Playgroud)