JavaScript事件处理和z-index

6uxekuva  于 2023-03-28  发布在  Java
关注(0)|答案(3)|浏览(171)

我目前有三个画布分层在对方的z索引。

<canvas width="800" height="600" id="test3_canvas" style="position: absolute; left: 0; top: 0; z-index:2"></canvas>

<canvas width = "800" height="600" id="test2_canvas" style="position: absolute; left: 0; top: 0;z-index:1"></canvas>

<canvas width="800" height="600" id="test1_canvas" style="position: absolute; left:0; top: 0;z-index:0"></canvas>

但是只有顶层canvas(z-index:2)似乎捕捉到了我设置的mousedown/mouseup/mousemove事件。有没有办法确保其他层也捕捉到这些事件?

mf98qq94

mf98qq941#

尽管这个设置看起来很奇怪,但我认为你可以把处理程序放在canvases外部的div上,然后让那个事件调用你需要的每一个canvas。

vxf3dgd4

vxf3dgd42#

不,没有办法做到这一点。一般来说,鼠标事件模型是最顶层“捕获”鼠标交互,而在文档呈现过程中,该元素下面的元素根本不会获得任何事件。对于普通的HTML标记,通常可以安排页面设计,使元素的“堆栈”在标记中按词法嵌套,在这种情况下,浏览器将通过元素祖先冒泡事件。但是,对于canvas元素,您实际上不能这样做。

  • edit* -看看@jarrett的回答
7vux5j2d

7vux5j2d3#

您不需要捕获后面的层,因为它们大小相同,所以您只需要获取一个层的事件并将其Map到其他层。

**编辑:**或者为什么不只在一个画布上绘制?

相关问题