トップへ(mam-mam.net/)

Javascriptでマウスカーソル直下の要素を取得(clientX,clientY,elementFromPoint)

検索:

Javascriptでマウスカーソル直下の要素を取得(clientX,clientY,elementFromPoint)

clientX、clientYでマウスのビューポート座標(見えている領域の左上が0,0とする相対座標)を取得できます。
event.clientX, event.clientY

elementFromPointを使うと指定したビューポート座標(x, y)の最上位の要素が返ってきます。
document.elementFromPoint(x, y)
但し「pointer-events="none"」の要素は無視され、その下の要素が返されます。 また座標が可視領域外の場合や x 又は y が負の値である場合、nullが返されます。

マウスを動かすと以下にビューポート座標とマウス直下の要素のタグ名が表示されます

ソースコード

<div id="mouse-point"></div>
<div id="under-mouse-element"></div>
<script>
window.addEventListener("mousemove",function(event){
  //マウスのビューポート座標を取得
  document.querySelector("#mouse-point").innerHTML=
      "マウスのビューポート座標:(" + event.pageX + "," + event.pageY + ")";
  //ビューポート座標から要素を取得
  let elm=document.elementFromPoint(event.clientX, event.clientY);
  if(elm!=null){
    //要素のタグ名を表示
    document.querySelector("#under-mouse-element").innerHTML=
        "マウスの下の要素:<"+elm.tagName+">";
  }
});
</script>