Document.elementsFromPoint() - 座標から全ての要素を取得する
elementsFromPoint()は、Documentのメソッドです。指定した座標にある全ての要素を配列で返します。
概要
- 名前
- elementsFromPoint
- 所属
- Document
- IDL
sequence<Element> elementsFromPoint(double x, double y);
- 仕様書
- https://drafts.csswg.org/cssom-view/#dom-document-elementsfrompoint
説明
第1引数(x)には、水平方向の座標を指定します。
第2引数(y)には、垂直方向の座標を指定します。
返り値は、座標の位置にある全ての要素を配列にしたものです。
デモ
Document.elementsFromPoint()のデモです。クリックした位置の座標にある要素を取得します。
<!-- このコードは編集できます。 -->
<!DOCTYPE html>
<head>
<style>
div#toto {
position: relative ;
height: 190px ;
background-color: #ffe ;
text-align: center ;
color: #fff ;
}
div#hoge {
width: 100px ;
height: 100px ;
background-color: #f00 ;
line-height: 100px ;
}
p#fuga {
width: 80px ;
height: 80px ;
line-height: 80px ;
background-color: #00f ;
position: absolute ;
top: 60px ;
left: 60px ;
margin: 0 ;
}
span#piyo {
width: 80px ;
height: 80px ;
line-height: 80px ;
background-color: #f0f ;
position: absolute ;
top: 110px ;
left: 110px ;
display: block ;
}
</style>
</head>
<body>
<div id="toto">
<div id="hoge">div要素</div>
<p id="fuga">p要素</p>
<span id="piyo">span要素</span>
</div>
<hr>
<div id="result"></div>
<script>
document.body.onclick = function ( event ) {
document.getElementById( "result" ).textContent = "" ;
var x = event.clientX ;
var y = event.clientY ;
var elements = document.elementsFromPoint( x, y ) ;
console.log( elements ) ;
document.getElementById( "result" ).appendChild( new Text( elements ) ) ;
}
</script>
</body>
</html>
サポート状況
Chrome | Firefox | Safari | Edge | IE | Opera | iOS Safari | Android |
---|---|---|---|---|---|---|---|
● 43+ | ● 46+ | × | ▲ | ▲ 10+ | ● 30+ | × | × |
関連記事
- Document.elementFromPoint()
- elementFromPoint()は、Documentのメソッドです。指定した座標にある要素を1つだけ取得します。複数の要素が重なっていた場合、取得するのは、一番手前にある要素だけです。
- Document.caretPositionFromPoint()
- caretPositionFromPoint()は、Documentのメソッドです。指定した座標から最も近い、適切なキャレットの位置を返します。
- Document.getSelection()
- getSelection()は、Documentのメソッドです。選択中のテキストを表すSelectionを返します。
- Document.createTreeWalker()
- createTreeWalker()は、Documentのメソッドです。TreeWalkerを新しく作成します。createNodeIterator()とcreateTreeWalker()は、作成するオブジェクトが違うだけで、仕組みは同じです。