我有三个HTML5画布元素。一个是透明的,完全覆盖另外两个不重叠的东西(我在它上面绘制的东西必须叠加,所以它的z-index必须是最高的。)
问题是最顶层的一个(overlay_area
)阻止了其他两个接收事件。我不需要最顶层的事件接收,所以
对于这个项目,我需要使用hammer.js和没有 jquery。
<canvas id="overlay_area"
style="z-index: 8; position:absolute; left:0px; top:35px;"
height="762px" width="968px">
This text is displayed if your browser does not support HTML5 Canvas.
</canvas>
<canvas id="wave_area"
style="z-index: 5;
position:absolute;
left:0px;
top:35px;"
height="762px" width="200px">
This text is displayed if your browser does not support HTML5 Canvas.
</canvas>
<canvas id="edit_area"
style="z-index: 5;
position:absolute;
left:200px;
top:35px;"
height="762px" width="768px">
This text is displayed if your browser does not support HTML5 Canvas.
</canvas>
答案 0 :(得分:2)
pointer-events:none;
它的井得到了很好的支持并且效果很好。
<强> Live Demo 强>
所以在你的情况下,它将是
<canvas id="overlay_area"
style="z-index: 8; position:absolute; left:0px; top:35px; pointer-events:none;"
height="762px" width="968px">
This text is displayed if your browser does not support HTML5 Canvas.
</canvas>
答案 1 :(得分:1)
您可以将三个<canvas>
元素包装到父元素中,然后让事件冒泡到父元素并在那里处理它们。
使用event
对象的pageX和pageY属性,结合offsetLeft,offsetTop,offsetWidth和{{ 3}} <canvas>
元素的属性,允许您翻译鼠标事件的坐标,并确定如果它们已经到达底部元素,它们将被触发的位置。