Web/API/DocumentOrShadowRoot/elementFromPoint

From Get docs


The elementFromPoint() method—available on both the Document and ShadowRoot objects—returns the topmost Element at the specified coordinates (relative to the viewport).

If the element at the specified point belongs to another document (for example, the document of an <iframe>), that document's parent element is returned (the <iframe> itself). If the element at the given point is anonymous or XBL generated content, such as a textbox's scroll bars, then the first non-anonymous ancestor element (for example, the textbox) is returned.

Elements with pointer-events set to none will be ignored, and the element below it will be returned.

If the method is run on another document (like an <iframe>'s subdocument), the coordinates are relative to the document where the method is being called.

If the specified point is outside the visible bounds of the document or either coordinate is negative, the result is null.

If you need to find the specific position inside the element, use Document.caretPositionFromPoint().

Syntax

const element = document.elementFromPoint(x, y)

Parameters

x
The horizontal coordinate of a point, relative to the left edge of the current viewport.
y
The vertical coordinate of a point, relative to the top edge of the current viewport.

Return value

The topmost Element object located at the specified coordinates.

Example

This example creates two buttons which let you set the current color of the paragraph element located under the coordinates (2, 2).

JavaScript

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

The changeColor() method simply obtains the element located at the specified point, then sets that element's current foreground color property to the color specified by the newColor parameter.

HTML

<p id="para1">Some text here</p>
<button onclick="changeColor('blue');">Blue</button>
<button onclick="changeColor('red');">Red</button>

The HTML provides the paragraph whose color will be affected, as well as two buttons: one to change the color to blue, and another to change the color to red.

Result

Specifications

Specification Status
Shadow DOMThe definition of 'elementsFromPoint()' in that specification. Obsolete
CSS Object Model (CSSOM) View ModuleThe definition of 'elementsFromPoint()' in that specification. Working Draft

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet

elementFromPoint

Experimental'

Chrome Full support 53

Notes'

Full support 53

Notes'

Notes' Before Chrome 66, this method returned null when the element was a child of a host node. See issue 759947.

Edge

Full support 12

Firefox

Full support 63

IE

Full support Yes

Opera

Full support 40

Safari

Full support Yes

WebView Android Full support 53

Notes'

Full support 53

Notes'

Notes' Before WebView 66, this method returned null when the element was a child of a host node. See issue 759947.

Chrome Android Full support 53

Notes'

Full support 53

Notes'

Notes' Before Chrome 66, this method returned null when the element was a child of a host node. See issue 759947.

Firefox Android

Full support 63

Opera Android

Full support 41

Safari iOS

Full support Yes

Samsung Internet Android Full support 6.0

Notes'

Full support 6.0

Notes'

Notes' Before Samsung Internet 9.0, this method returned null when the element was a child of a host node. See issue 759947.

Legend

Full support  
Full support
Experimental. Expect behavior to change in the future.'
Experimental. Expect behavior to change in the future.
See implementation notes.'
See implementation notes.


See also