返回課程

找出欄位的視窗座標

重要性:5

在下方 iframe 中,你可以看到一個有綠色「欄位」的文件。

使用 JavaScript 找出由箭頭指向的角落的視窗座標。

文件中有實作一個小功能以方便使用。在任何地方按一下都會顯示座標。

你的程式碼應使用 DOM 來取得下列視窗座標:

  1. 左上角,外側角落(很簡單)。
  2. 右下角,外側角落(也很簡單)。
  3. 左上角,內側角落(稍微難一點)。
  4. 右下角,內側角落(有數種方法,選一種)。

你計算出的座標應與滑鼠按一下時回傳的座標相同。

附註:如果元素有其他大小或邊框,不受任何固定值約束,則程式碼也應可正常運作。

為此任務開啟沙盒。

外角

外角基本上就是我們從 elem.getBoundingClientRect() 取得的結果。

左上角座標 answer1 和右下角座標 answer2

let coords = elem.getBoundingClientRect();

let answer1 = [coords.left, coords.top];
let answer2 = [coords.right, coords.bottom];

左上內角

這與外角的差異在於邊框寬度。取得距離的可靠方法是 clientLeft/clientTop

let answer3 = [coords.left + field.clientLeft, coords.top + field.clientTop];

右下內角

在我們的案例中,我們需要從外座標中減去邊框大小。

我們可以使用 CSS 方法

let answer4 = [
  coords.right - parseInt(getComputedStyle(field).borderRightWidth),
  coords.bottom - parseInt(getComputedStyle(field).borderBottomWidth)
];

另一種方法是將 clientWidth/clientHeight 加到左上角座標。這可能更好

let answer4 = [
  coords.left + elem.clientLeft + elem.clientWidth,
  coords.top + elem.clientTop + elem.clientHeight
];

在沙盒中開啟解決方案。