文件:elementFromPoint() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

Document 物件上的 elementFromPoint() 方法會返回指定座標(相對於視口)處最頂層的 Element

如果指定點處的元素屬於另一個文件(例如,<iframe> 的文件),則會返回該文件的父元素(即 <iframe> 本身)。如果給定點處的元素是匿名的或 XBL 生成的內容,例如文字框的捲軸,則會返回第一個非匿名的祖先元素(例如,文字框)。

pointer-events 設定為 none 的元素將被忽略,並返回其下方的元素。

如果方法是在另一個文件(如 <iframe> 的子文件)上執行的,則座標相對於正在呼叫該方法的文件。

如果指定的點超出文件的可見邊界,或者任一座標為負數,則結果為 null

如果您需要查詢元素內的特定位置,請使用 Document.caretPositionFromPoint()

語法

js
elementFromPoint(x, y)

引數

x

點的水平座標,相對於當前 視口 的左邊緣。

y

點的垂直座標,相對於當前視口的頂部邊緣。

返回值

位於指定座標的最頂層的 Element 物件。

示例

此示例建立了兩個按鈕,可讓您更改位於座標 (2, 2) 下方的段落元素的當前顏色。

HTML

html
<p id="para1">Some text here</p>
<button>Blue</button>
<button>Red</button>

HTML 提供了將受影響的段落,以及兩個按鈕:一個將顏色更改為藍色,另一個將顏色更改為紅色。

JavaScript

js
function changeColor(newColor) {
  const elem = document.elementFromPoint(2, 2);
  elem.style.color = newColor;
}

document.querySelectorAll("button").forEach((button) => {
  button.addEventListener("click", (event) => {
    changeColor(event.target.textContent.toLowerCase());
  });
});

changeColor() 方法獲取位於指定點的元素,然後將其當前的前景色 color 屬性設定為 newColor 引數指定的顏色。

結果

規範

規範
CSSOM 檢視模組
# dom-document-elementfrompoint

瀏覽器相容性

另見