JavaScript の getBoundingClientRect() メソッドを活用し、要素の位置とサイズを取得する方法を解説します。
JavaScript でウェブページの要素を操作する際、特定の要素の位置やサイズを取得 したい場面は多くあります。例えば、
このような場合に便利なのが、getBoundingClientRect()
です。本記事では、このメソッドの基本的な使い方と応用例を解説します。
getBoundingClientRect()
は、HTML 要素の位置とサイズを取得 するためのメソッドです。
返されるのは DOMRect
オブジェクトで、以下の情報を取得できます。
プロパティ | 説明 |
---|---|
x / left | 要素の左端の X 座標(ビューポート基準) |
y / top | 要素の上端の Y 座標(ビューポート基準) |
right | 要素の右端の X 座標 |
bottom | 要素の下端の Y 座標 |
width | 要素の幅(right - left ) |
height | 要素の高さ(bottom - top ) |
JAVASCRIPTconst element = document.querySelector("#myElement"); const rect = element.getBoundingClientRect(); console.log(`X: ${rect.x}, Y: ${rect.y}`); console.log(`幅: ${rect.width}, 高さ: ${rect.height}`);
これにより、要素の画面上での位置やサイズが取得できます。
getBoundingClientRect()
の座標は ビューポート基準 であり、ページがスクロールすると値が変化します。
ページ全体の座標を求めるには、window.scrollX
や window.scrollY
を加算します。
JAVASCRIPTconst scrollX = window.scrollX || document.documentElement.scrollLeft; const scrollY = window.scrollY || document.documentElement.scrollTop; const absoluteX = rect.x + scrollX; const absoluteY = rect.y + scrollY; console.log(`ページ全体のX: ${absoluteX}, Y: ${absoluteY}`);
要素が画面内にあるかどうかを判定するには、getBoundingClientRect()
の top
や bottom
の値を window.innerHeight
と比較します。
JAVASCRIPTfunction isElementInViewport(el) { const rect = el.getBoundingClientRect(); return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= window.innerHeight && rect.right <= window.innerWidth ); } const targetElement = document.querySelector("#target"); console.log(isElementInViewport(targetElement)); // true または false
✅ このコードで、要素が画面内にあるかどうかを簡単にチェック可能!
オブジェクト | 役割 | 主な用途 |
---|---|---|
window | ブラウザウィンドウ全体 | ビューポートサイズ取得、URL 変更 |
document | HTML ドキュメント全体 | 要素取得・変更、タイトル変更 |
getBoundingClientRect() | 特定の要素の位置 | スクロール制御、要素の動的操作 |
getBoundingClientRect()
を使うと、要素の位置やサイズを簡単に取得でき、スクロールやアニメーションなどの動的な画面操作を実装しやすくなります。
✅ 学んだこと
getBoundingClientRect()
で要素の座標・サイズを取得window.scrollX
や window.scrollY
を加算isElementInViewport()
で要素が画面内にあるか判定このメソッドを活用し、よりインタラクティブなウェブページを作成しましょう。
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。