我有以下代碼:(的jsfiddle:https://jsfiddle.net/cjpLa44m/2/)排列元件點擊優先
<style>
body,
html {
width: 100%;
height: 100%;
border: 0;
padding: 0;
margin: 0;
overflow: hidden
}
.everything {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
.mainImg img {
width: 100%;
height: 100%;
}
.mainImg {
width: 50vh;
height: 50vh;
position: relative
}
#canvas{
position: absolute;
top: 0;
left: 0;
}
</style>
<div class="everything">
<div class="mainImg"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/SNice.svg/1200px-SNice.svg.png"></div>
</div>
<script>
var canvas = document.createElement("canvas");
var width = innerWidth;
var height = innerHeight;
var ctx = canvas.getContext('2d');
canvas.width = width;
canvas.id = "canvas";
canvas.height = height;
ctx.fillStyle = "green";
ctx.fillRect(0,0, 50, 50);
ctx.fillRect(width/2, height/2, 50, 50);
window.onload = function() {
document.body.appendChild(canvas);
document.body.style.margin = "0";
document.body.style.overflow = "hidden";
};
canvas.onclick = function(){
alert("Canvas called, although it shouldn't");
}
var smile = document.getElementsByClassName("mainImg")[0];
smile.onclick = function(){
alert("i should be called");
}
</script>
我有其在所述瀏覽器爲中心的圖像,以及畫布其上的絕對位置,在整個屏幕上擴展。 關於顯示,畫布的顯示優先於圖像,這就是我想要的,因爲我使用畫布的一些transperent部分來顯示圖像。
問題在於點擊優先級:正如你所看到的,當你點擊笑臉圖像時,畫布的點擊函數被調用,因爲它在整個屏幕上傳播。但就點擊優先級而言,我希望我的圖像被調用。可以做到嗎?
謝謝你的時間,我很感激。
您可以在畫布上添加一個新元素,接受點擊。 –
在你的小提琴中,我永遠不會觸發simle.onclick,即我總是隻從canvas.onclick – emanek
emanek得到警報,這就是我正在談論的問題...請再次閱讀我的線程。亞歷山大 - 我不太明白,對不起。 – RunningFromShia