更高z-index覆盖的元素上的悬停事件?
Posted
技术标签:
【中文标题】更高z-index覆盖的元素上的悬停事件?【英文标题】:Hover events on element covered by higher z-index? 【发布时间】:2014-04-24 17:08:07 【问题描述】:我有一个横跨整个屏幕的画布元素 (canvas-mouse
) - 它的目的是在一定大小的鼠标周围绘制一个 50% 不透明度的圆圈 (grabsize
)。页面上还有一些 div 中的图像。我希望这些图像可以点击/悬停,但我也希望canvas-mouse
中的 50% 不透明度圆圈出现在它们的顶部。
有没有办法做到这一点?
html:
<canvas id="canvas-mouse" class="fullscreen"></canvas>
<div class="object die"><img src="images/Die_d6.svg"></div>
CSS:
html, body
width: 100%;
height: 100%;
margin: 2px;
overflow: hidden;
color: #FFFFFF;
background-color: #2C744C;
canvas.fullscreen
position: absolute;
left: 0px;
top: 0px;
z-index: -1;
.object
position: absolute;
#canvas-mouse
z-index: 10;
CanvasRenderingContext2D.prototype.drawCircle = function(xpos, ypos, radius, linewidth, linecolor, fill)
if(typeof(linewidth)==="undefined")
linewidth = 1;
if(typeof(linecolor)==="undefined")
linecolor = "#000000";
this.beginPath();
this.arc(xpos, ypos, radius, 0, 2*Math.PI, false);
this.lineWidth = linewidth;
if(typeof(fill)!=="undefined")
this.fillStyle = fill
this.fill();
this.strokeStyle = linecolor;
this.stroke();
CanvasRenderingContext2D.prototype.maximize = function()
this.canvas.width = window.innerWidth;
this.canvas.height = window.innerHeight;
mousectx = $("#canvas-mouse")[0].getContext("2d");
mousectx.maximize();
//Dice handlers
$(".object.die").hover(function()
//Hover event goes here
)
$(".object.die").mousedown(function()
//Click event goes here
)
//Mouse movement handler
$(document).mousemove(function(e)
//Get the mouse positions and put them in mouse
mouse.x = e.pageX;z
mouse.y = e.pageY;
//Redraw the grab circle
mousectx.clearCanvas();
mousectx.drawCircle(mouse.x,mouse.y,grabsize,1,"#000000","rgba(0,0,255,0.5)");
);
提前致谢。
【问题讨论】:
这个***.com/questions/3680429/… 可能会解决问题.. 画布鼠标不应该有一个相对位置来让 z-index 起作用吗? 【参考方案1】:尝试使用pointer-events: none
。该规则告诉浏览器忽略一个元素。它不会接收鼠标事件,但会'通过'。
#canvas-mouse
z-index: 10;
pointer-events: none;
【讨论】:
以上是关于更高z-index覆盖的元素上的悬停事件?的主要内容,如果未能解决你的问题,请参考以下文章
如何让带有 z-index 的 div 在悬停时覆盖另一个 div