getBoundingClientRect()メソッドの使い方

2024-04-03

HTML要素の位置(X,Y)を取得する

要素の座標系

要素の位置は、ページ座標系親要素座標系の2つの座標系で取得できます。

  • ページ座標系: ページ全体を基準とした座標系です。要素の左上端が(0, 0)になります。
  • 親要素座標系: 親要素を基準とした座標系です。要素の左上端が親要素の左上端からの相対的な位置になります。

JavaScriptによる座標取得

getBoundingClientRect() メソッドは、要素の境界ボックスの座標を取得します。境界ボックスとは、要素のコンテンツを含む最小の矩形です。

const element = document.querySelector('.element');
const rect = element.getBoundingClientRect();

// ページ座標系でのX座標
const x = rect.left;

// ページ座標系でのY座標
const y = rect.top;

offset() メソッドは、要素の左上端がページ左上端からの相対的な位置を取得します。

const element = document.querySelector('.element');
const offset = element.offset();

// ページ座標系でのX座標
const x = offset.left;

// ページ座標系でのY座標
const y = offset.top;
const element = document.querySelector('.element');
const position = element.position();

// 親要素座標系でのX座標
const x = position.left;

// 親要素座標系でのY座標
const y = position.top;

CSSによる座標取得

CSSの position プロパティを使って、要素の座標を指定できます。

.element {
  position: absolute;
  left: 10px;
  top: 10px;
}

上記コードでは、要素の左上端がページ左上端から10px離れた位置に配置されます。

まとめ

HTML要素の位置を取得するには、JavaScriptの getBoundingClientRect() メソッド、offset() メソッド、position() メソッド、またはCSSの position プロパティを使うことができます。




<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>要素の位置を取得</title>
</head>
<body>
  <div class="element">
    要素の位置を取得
  </div>
  <script>
    const element = document.querySelector('.element');
    const rect = element.getBoundingClientRect();

    // ページ座標系でのX座標
    const x = rect.left;

    // ページ座標系でのY座標
    const y = rect.top;

    console.log(`X座標: ${x}`);
    console.log(`Y座標: ${y}`);
  </script>
</body>
</html>

このコードを実行すると、コンソールに要素のX座標とY座標が表示されます。

以下のリンクから、他の方法で要素の位置を取得するサンプルコードを参照できます。




要素の位置を取得する他の方法

  • getComputedStyle() メソッド: 要素のスタイル情報 (CSSプロパティ) を取得できます。
  • getClientRects() メソッド: 要素の各行の境界ボックスの座標を取得できます。
  • scrollX プロパティと scrollY プロパティ: スクロールバーの位置を取得できます。
  • window.innerWidth プロパティと window.innerHeight プロパティ: ウィンドウの幅と高さを取得できます。

jQuery

  • scrollTop() メソッドと scrollLeft() メソッド: 要素のスクロールバーの位置を取得できます。
  • width() メソッドと height() メソッド: 要素の幅と高さを取得できます。

CSS

  • calc() 関数: 計算式を使って要素の座標を指定できます。
  • transform プロパティ: 要素の座標を変換できます。

javascript html css


jQueryとJavaScriptで使えるHTMLテンプレートライブラリ

jQueryとJavaScriptで使えるHTMLテンプレートライブラリはたくさんありますが、それぞれ長所と短所があります。以下に、代表的なライブラリとその特徴を紹介します。Handlebars. js非常に高速で、多くの機能を備えています。...


Google JSAPI vs CDN: jQuery ライブラリの読み込み場所

Google JSAPI は、Google が提供する JavaScript ライブラリのホスティングサービスです。 jQuery を含む多くのライブラリが用意されており、CDN 経由で高速に配信されます。メリット:高速な配信信頼性の高いサービス...


ブラウザごとに異なる?CSSで境界線の透明度を設定する際の注意点

方法:border-opacity プロパティを使用します。値は 0.0 から 1.0 までの数値で、0.0 が完全に透明、1.0 が完全に不透明になります。例:補足:border-opacity プロパティは、すべての主要なブラウザでサポートされています。...


Webサイトの使いやすさを劇的に向上させる!jQueryでセレクトボックスをカスタマイズする方法

jQueryを使って、セレクトボックスの選択されたオプションを設定するには、いくつかの方法があります。方法val() メソッドfind() メソッドとeq() メソッド補足上記の例では、#my-select という ID を持つセレクトボックスを対象としています。...