canvas onclick coordinates using getBoundingClientRect always the same

前端 未结 1 1206
庸人自扰
庸人自扰 2020-12-11 19:35

I am trying to use getBoundingClientRect to get the coordinates of my click on canvas, but am always getting the same result.

My code is here: http://fiddle.jshell.n

1条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-11 19:50

    That's because you always use the absolute position of the element returned by getBoundingClientRect, and not the mouse position.

    Try this instead:

    canvas.addEventListener('click', function(e) {  // use event argument
    
        var rect = canvas.getBoundingClientRect();  // get element's abs. position
        var x = e.clientX - rect.left;              // get mouse x and adjust for el.
        var y = e.clientY - rect.top;               // get mouse y and adjust for el.
    
        alert('Mouse position: ' + x + ',' + y);
        ...
    

    Modified fiddle

    0 讨论(0)
提交回复
热议问题