バニラJavaScriptでdiv要素の高さを取得する方法【clientHeightとoffsetHeightの違い】
divの高さを取得できる2つのプロパティ
バニラJavaScript(ライブラリやフレームワークに依存しない素のJavaScript)では、clientHeightとoffsetHeightという2つのプロパティを使って、div要素の高さを簡単に取得できます。
どちらもピクセル単位の整数値を返しますが、計算に含まれる要素が異なるため、用途に応じて適切に使い分けることが大切です。
- clientHeight:要素の高さにパディングを含みます。ボーダーやスクロールバーは含まれません。
- offsetHeight:要素の高さにパディング・スクロールバー・ボーダーをすべて含みます。
違いの比較表
| プロパティ | パディング | スクロールバー | ボーダー |
|---|---|---|---|
| clientHeight | 含む | 含まない | 含まない |
| offsetHeight | 含む | 含む | 含む |
使用例
たとえば、次のようなHTMLがあるとします。
<div id="myDiv" style="height: 400px;"></div>
このdiv要素の高さは、querySelectorで要素を取得したうえで、以下のようにして求められます。
const height = document.querySelector('#myDiv').offsetHeight;
console.log(height);
実行結果
このコードを実行すると、コンソールには次のように出力されます。
400
補足:getBoundingClientRectとの違い
より詳細なレイアウト情報が必要な場合は、getBoundingClientRect()メソッドも便利です。このメソッドは小数点以下を含む正確なサイズや位置を返すため、変換(スケーリング)が適用された要素の高さを取得したい場合に有効です。
const rect = document.querySelector('#myDiv').getBoundingClientRect();
console.log(rect.height); // 高さを出力
単純にレイアウト上の高さを整数で取得したいならoffsetHeight、精密な測定が必要ならgetBoundingClientRect()というように、目的に合わせて選択しましょう。
-
JavaScriptでdiv要素のスクリーンショットを撮る方法!html2canvasの使い方を徹底解説
Web開発において、サイトのレイアウトを構成するHTML要素の一部を画像としてキャプチャし、その画像を保存したり別の用途に活用したいというニーズはよくあります。本記事では、JavaScriptを使ってdiv要素などをスクリーンショットとして撮影する方法を解説します。 html2canvasライブラリを使う 今回の要件はcanvas要素だけでなく、任意のHTML要素をキャプチャ対象とする点がポイントです。CSSによる描画結果を自力で再現しようとすると実装が非常に複雑になるため、ここではサードパーティ製ライブラリのhtml2canvasを利用します。 html2canvasは、その名の通り指定した
-
JavaScriptでCSS変数を取得・設定する方法
JavaScriptを活用すると、CSS変数(カスタムプロパティ)の値を動的に読み取ったり、書き換えたりすることができます。ポイントになるのは、次の3つのメソッドです。 1. getComputedStyle() ― 適用済みスタイルの取得 getComputedStyle()メソッドは、対象の要素に実際に適用されているすべてのスタイル情報を含むオブジェクトを返します。このオブジェクトには、CSS変数の値も含まれています。 2. getPropertyValue() ― 目的のプロパティ値の取得 getComputedStyle()が返したオブジェクトに対してgetPropertyVal