2017-04-25 103 views
0

当光标位于红色十字(元素的绝对中间)时,我试图将左上角的坐标设置为0%和0%。 左转应该使X轴变负。当我上升时,Y轴也一样。向右/向下应该包含正值。如何在元素的中心设置鼠标位置为0,0?

正如您在图像中看到的,坐标现在是50%和50%。 一个codepen这个片段可以发现@https://codepen.io/michaelkoelewijn/pen/RVGmKN

let pageY = e.pageY - this.offsetTop; 
let pageX = e.pageX - this.offsetLeft; 
let percY = ((pageY/elHeight) * 100); 
let percX = ((pageX/elWidth) * 100); 

我敢肯定,我的计算比例公式不正确,但我似乎无法在别处找到我的答案。有没有人有我寻找的黄金答案?

谢谢!

Javascript position

回答

1

您的百分比公式是正确的。然而,this.offsetTopthis.offsetLeft在HTML规范中定义为从元素的左上角开始测量,因此0%,0%坐标位于框的左上角。

做你想做什么,你可以刚刚从percXpercY减去50%:

let pageY = e.pageY - this.offsetTop; 
let pageX = e.pageX - this.offsetLeft; 
let percY = ((pageY/elHeight) * 100) - 50; 
let percX = ((pageX/elWidth) * 100) - 50; 

EDIT(如果你想的范围是从-100%至100%)

2只是乘percXpercY

let pageY = e.pageY - this.offsetTop; 
let pageX = e.pageX - this.offsetLeft; 
let percY = (((pageY/elHeight) * 100) - 50) * 2; 
let percX = (((pageX/elWidth) * 100) - 50) * 2; 
+1

谢谢!这很简单吧? xD 如果我想让最大的负值为100%而不是50呢? 这是很容易实现的东西吗? –

+0

@MichaelKoelewijn如果我正确理解你,是的:) – Bernard

+0

@MichaelKoelewijn也很容易。只需将'percX'和'percY'乘以2即可。 – Bernard

1

我猜:

let pageY = e.pageY - this.offsetTop; 
let pageX = e.pageX - this.offsetLeft; 
let percY = (((pageY/elHeight) * 100)-50)*(-2); 
let percX = (((pageX/elWidth) * 100)-50)*(2); 
+0

所以如果你正在寻找-100%到100%这应该工作 – NoOorZ24

+0

天才!这确实是我正在寻找的。 非常感谢。 –

相关问题