我目前有三个画布分层在对方的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
事件。有没有办法确保其他层也捕捉到这些事件?
3条答案
按热度按时间mf98qq941#
尽管这个设置看起来很奇怪,但我认为你可以把处理程序放在canvases外部的div上,然后让那个事件调用你需要的每一个canvas。
vxf3dgd42#
不,没有办法做到这一点。一般来说,鼠标事件模型是最顶层“捕获”鼠标交互,而在文档呈现过程中,该元素下面的元素根本不会获得任何事件。对于普通的HTML标记,通常可以安排页面设计,使元素的“堆栈”在标记中按词法嵌套,在这种情况下,浏览器将通过元素祖先冒泡事件。但是,对于canvas元素,您实际上不能这样做。
7vux5j2d3#
您不需要捕获后面的层,因为它们大小相同,所以您只需要获取一个层的事件并将其Map到其他层。
**编辑:**或者为什么不只在一个画布上绘制?