Вместо решения проблемы вы можете ее избежать.В следующем примере я использую pointer-events:none
для холста только на wheel
.Это позволит вам прокрутить холст.Однако, как только вы нажмете container
, я удаляю встроенные стили для холста.В качестве альтернативы я мог бы написать test.style.pointerEvents = "initial"
test.addEventListener("wheel", ()=>{
test.style.pointerEvents = "none";
console.log("w")
})
container.addEventListener("click",(evt)=>{test.style.cssText = "";
console.log(oMousePos(test, evt))})
function oMousePos(elmt, evt) {
var ClientRect = elmt.getBoundingClientRect();
return { //objeto
x: Math.round(evt.clientX - ClientRect.left),
y: Math.round(evt.clientY - ClientRect.top)
}
}
.container {
background: #CCCCCC;
width: 200px;
height: 200px;
position: relative;
border: 4px black solid;
}
.content {
width: 100%;
height: 100%;
overflow: scroll;
}
.overlay {
border:1px solid black;
background: rgba(255,0,0,0.5);
position: absolute;
top: 0;
right: 0;
bottom: 0;
left:0;
height: 150px;
width: 150px;
pointer-events:auto;
}
<div class="container" id="container">
<div class="content">
blah<br/>blah<br/>blah<br/>blah<br/>blah<br/>
blah<br/>blah<br/>blah<br/>blah<br/>blah<br/>
blah<br/>blah<br/>blah<br/>blah<br/>blah<br/>
blah<br/>blah<br/>blah<br/>blah<br/>blah<br/>
blah<br/>blah<br/>blah<br/>blah<br/>blah<br/>
blah<br/>blah<br/>blah<br/>blah<br/>blah<br/>
</div>
<canvas class="overlay" id="test">
</canvas>
</div>