GetBoundingClientRectを使用して要素のサイズと位置を取得する

提供:Dev Guides
移動先:案内検索

序章

JavaScript DOM (ドキュメントオブジェクトモデル)の一部であるgetBoundingClientRectは、HTML要素のサイズと位置に関する重要なデータを提供します。

この記事では、getBoundingClientRectを使用して、要素のサイズと位置を取得します。

前提条件

このチュートリアルを完了するには、次の概念に精通している必要があります。

getBoundingClientRect()を理解する

getBoundingClientRectを使用するには、最初にHTML要素をフェッチし、要素に対してgetBoundingClientRectを呼び出します。

document.getElementById("foo").getBoundingClientRect();

getBoundingClientRectは、オブジェクトといくつかのキー/値のペアを返し、要素のサイズとWebページ内の位置に関する情報を提供します。

Output{
  top: 450,
  left: 400,
  right: 825,
  bottom: 500,
  x: 400,  
  y: 450,  
  width: 425,
  height: 50
}

次の図は、値ごとに返される情報を示しています。

xおよびyの値は、leftおよびtopの値と同等になります。 このため、一部のブラウザはxyを省略し、lefttopのみを返します。

もう1つの注意点は、right / bottomは、position: absoluteを使用したポジショニングの場合のように、CSSポジショニングで慣れているものとは異なる場合があることです。

これは、値とそれらが要素にどのように関連しているかを示す図です。

getBoundingClientRect()が何を返すかを確認したので、同じ例を使用して、getBoundingClientRect()からの出力を理解しているかどうかを確認します。

アプリケーションでのgetBoundingClientRectの使用

独自のコードでgetBoundingClientRectを使用するには、クエリする要素を含むHTMLドキュメントが必要です。

テキストエディタでboundingbox.htmlという名前の新しいHTMLファイルを作成します。

nano boundingbox.html`

このファイルで、[X104X]のidを使用して<body><div>タグを含むHTMLドキュメントを作成します。

boundingbox.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>useBoundingBox example</title>
  </head>
  <body>
    <div id="hello">Hello World</div>
  </body>
</html>

ページに要素ができたら、#foo要素でgetBoundingClientRectを呼び出すことができます。 終了<body>タグの下に、新しい<script>タグを追加します。 <script>タグ内で、helloidを持つ要素をフェッチし、getBoundingClientRect()を呼び出します。 結果をJavaScriptコンソールに出力します。

boundingbox.html

<body>
  <div id="hello">Hello World</div>

  <script>
  const helloElement = document.getElementById('hello');
  const results = helloElement.getBoundingClientRect();
  </script>

</body>

ファイルを保存し、ブラウザにboundingbox.htmlをロードします。

コンソールには次の出力が表示されます。

Outputbottom: 27.199996948242188
height: 19.199996948242188
left: 8
right: 1261
top: 8
width: 1253
x: 8
y: 8

#hello要素からの出力は、Webページ上のそのサイズと位置を示します。 この情報を使用して、この要素を基準にして他の要素を配置したり、要素をアニメートしたりできます。

結論

この記事では、getBoundingClientRectが要素の位置に関する豊富なデータを提供することを確認しました。 getBoundingClientRectはビューポートを基準にしているため、window.scrollYおよびwindow.scrollXの値をtopおよびleftフィールドに追加してHTMLを取得できます。 Webページ全体に対する要素の位置。

すべてのデスクトップおよびモバイルブラウザで確実にサポートされますが、古いバージョンのInternet Explorer/EdgeおよびSafariでは不安定なxおよびyの値は除外されます。

getBoundingClientRectの詳細については、W3Cの CSSオブジェクトモデル(CSSOM)ビューモジュールの公式仕様を参照してください。