0👍
I use these two methods (not sure without further digging why they are not the same):
canv = document.getElementById("id-of-canvas-object")
function mouseLocation(e)
{
if (e.preventDefault)
e.preventDefault();
var x = e.PageX; var y = e.PageY;
// in one instance
var relativeX = x - canv.offsetLeft;
var relativeY = y - canv.offsetTop;
// in another instance
var rect = canv.getBoundingClientRect();
relativeX = x - rect.left;
relativeY = y - rect.top;
}
- [Vuejs]-How can I select just one item of items to be show in a component after click? in vue js
- [Vuejs]-Can we use library function without calling 'this'?
0👍
On the example you shared you are not taking in count the offset when re positioning the cursor and you’re substracting a 60px offset that is unnecessary because of the fixed positioning of the controls.
There are just 2 differences on lines: 234 & 239
setSize() {
this.c.width = this.c.offsetWidth;
this.c.height = this.c.offsetHeight; // <--- HERE i removed the -60px offset
}
moveMouse(e) {
let x = e.offsetX;
let y = e.offsetY + 60; // <--- HERE i added the 60px offset
// the ´e.offsetY´ is relative to the canvas but you have an offset
// for the controls that is moving the cursor (the little dot) to the top
var cursor = document.getElementById("cursor");
cursor.style.transform = `translate(${x}px, ${y}px)`;
}
Heres the example fixed: Fixed codesandbox
Note: I recommend to change the fixed positioning of the controls and manage everything with fixed height and width values or use flexbox to grow the canvas as it needs to.
Source:stackexchange.com