2017-04-25 151 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

天才!這確實是我正在尋找的。 非常感謝。 –

相關問題