javascript 座標を指定して要素を取得する
- 2021.03.30
- javascript
- javascript

javascriptで、elementFromPointを使用して、座標を指定して要素を取得するサンプルコードを掲載してます。ブラウザはchromeを使用しています。
環境
- OS windows10 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 84.0.4147.105
elementFromPoint使い方
elementFromPointを使用すると、座標を指定して要素を取得することが可能です。
1 |
document.elementFromPoint(x座標, y座標); |
elementFromPoin使い方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* html */ <button id="main">button</button> /* javascript */ 'use strict'; document.getElementById('main').onclick = function (e) { //座標取得 const x = e.clientX; const y = e.clientY; //座標を指定して要素を取得 const elm = document.elementFromPoint(x, y); elm.textContent = "change"; } |
実行結果をみると、指定した要素が拡大されていることが確認できます。

macのsafari(13.1.3)でも同じ結果となります。

また、document.getElementByIdの省略と関数をアロー化して、簡潔に記述することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 |
main.onclick = (e) => { //座標取得 const x = e.clientX; const y = e.clientY; //座標を指定して要素を取得 const elm = document.elementFromPoint(x, y); elm.textContent = "change"; } |
サンプルコード
以下は、
「要素」をクリックすると座標を取得して、取得した座標から要素を生成して、x,y座標を表示する
サンプルコードとなります。
※cssには「tailwind」を使用して、アロー関数で関数は定義してます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>mebeeサンプル</title> <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet"> </head> <script> let count = 1; const hoge = (e) => { //座標取得 const x = e.clientX; const y = e.clientY; //座標を指定して要素を取得 const elm = document.elementFromPoint(x, y); elm.textContent = `x:${x} y:${y}`; } window.onload = () => { result.onclick = (e) => { hoge(e) }; } </script> <body> <div class="container mx-auto my-56 w-64 px-4"> <div id="sample" class="flex flex-col justify-center"> <p id="result" class="bg-gradient-to-r from-green-400 to-blue-500 text-white py-2 px-4 rounded-full mb-3 mt-4"> 座標を表示 </p> </div> </div> </body> </html> |
座標が取得できていることが確認できます。

-
前の記事
SourceTreeを使ってブランチを追加する 2021.03.29
-
次の記事
ruby クラス内で定数を使用する 2021.03.30
コメントを書く