javascriptmouse-position

Javascript: Get mouse position relative to parent element


Is there any way to get mouse position relative to it's parent element?

Let's say I have a structure:

<div id="parent">
    <span class="dot"></span>
</div>

When I bring my mouse over span element I need to get its position relative to its parent element (<div id="parent">). PageX/ClientX give me position relative to page/client area, so it's not working for me.


Solution

  • Subtract the viewport-relative position of the parent element you can get via getBoundingClientRect() from the mouse position in the event's clientX and clientY to get relative position.

    For example:

    element.addEventListener("mousedown", function (e) {
        let bounds = parent.getBoundingClientRect();
        let x = e.clientX - bounds.left;
        let y = e.clientY - bounds.top;
    
        console.log(x, y);
    });
    

    Where element is your inner element receiving the event, and parent is your desired reference for the coordinates.