#063
posted on 2022.01.09

ブラウザのウィンドウ高さの取得方法と動作デモ。

要素の全画面表示に対応する場合などで、スマホの縦スクロールでブラウザ固有のメニューバーのサイズ変化に合わせて変動するwindowの高さを取得したいときに、JavaScriptのどのプロパティーを参照すれば良いか忘れるのでメモ。

※ WindowインターフェイスについてのMozillaの公式ドキュメント

 

 

実機チェック用の動作デモページ

※ 実機で実測値をチェックするために作成した、「load」、「scroll」、「resize」イベントが発生したらブラウザのウィンドウ高さを取得して表示するデモページ。

 

 

ネイティヴJavaScriptで取得する場合

ライブラリーを使わずにネイティブJavaScript(Vanilla JavaScript)だけで取得する場合は、高さの情報を保持するプロパティーの値を参照する。

  1. [ 現在の状態での表示領域の高さをリアルタイムで取得 ]
    「window」オブジェクトの「innerHeight」プロパティーを参照する。
    ※ スマホではブラウザのメニューバーの高さの変動に合わせて、そのときのコンテンツ表示領域の高さを返す。
  2. [ 表示領域が最大状態のときの高さを常に取得 ]
    「window」オブジェクトの「outerHeight」プロパティーを参照する。
    ※ スマホでは常にコンテンツ表示領域が最大(ブラウザのメニューバーが最小)状態のときの表示領域の高さを返す。(PCの場合は、ブラウザのUI部分も含めた高さが返されてしまうので実用性は不明。)
  3. [ 表示領域が最小状態のときの高さを常に取得 ]
    「html」要素の「clientHeight」プロパティーを参照する。
    ※ スマホでは常にコンテンツ表示領域が最小(ブラウザのメニューバーが最大)状態のときの表示領域の高さを返す。(PCの場合は、「window.innerHeight」と同じ値。)

※ 基本的に、現在の状態でのコンテンツ表示領域の高さを返す「window.innerHeight」か、常に最小状態のときのコンテンツ表示領域の高さを返す「document.documentElement.clientHeight」を状況に合わせて使い分ける。

 

1. windowオブジェクトのinnerHeightプロパティー

window.innerHeight : ウィンドウの「layout viewport」の高さをピクセル単位の整数で返す。水平方向のスクロールバーが表示されていれば、スクロールバーの高さを含めた値を返す。

※ 「layout viewport」とは、ブラウザが描き出したWebページの、見えている領域を意味するviewport。

※ 「innerHeight」は、windowオブジェクト以外にも、ウィンドウのように動作するオブジェクト(タブやフレームなど)の高さを取得することもできる。

※ 水平方向のスクロールバーや境界を引いた高さの取得には「html」要素が持つ「clientHeight」プロパティーを参照する。(後述。)

let windowHeight = window.innerHeight;

 

2. windowオブジェクトのouterHeightプロパティー

window.outerHeight : ブラウザのUI操作部分、ウィンドウをリサイズする境界やハンドルを含む、ブラウザウィンドウ全体の高さをピクセル単位の整数で返す。

let windowHeight = window.outerHeight;

 

3. 「html」要素のclientHeightプロパティー

要素.clientHeight : 指定した要素の内側の寸法(paddingを含めるがmarginやスクロールバーは含めない)をピクセル単位の整数で返す。documentのルート要素(「html」要素)を指定した場合は、スクロールバーを除いた「layout viewport」の高さを返す。

※ HTML文書の場合、「document.documentElement」は「document」のルート要素である「html」要素を返す。

let windowHeight = document.documentElement.clientHeight;

 

4. screenオブジェクトのheightプロパティー

window.screen.height : デバイスの画面の高さをピクセル単位の整数で返す。

※ 「screen」オブジェクトはScreenインターフェイスを実装していて、現在のウィンドウが描画されている画面を表す。

※ 「screen」オブジェクトは「window」オブジェクトの「screen」プロパティーで参照できる。(Webブラウザ上で「window」オブジェクトはグローバルオブジェクトなので、「window.」は省略できる。)

let screenHeight = screen.height;

 

5. screenオブジェクトのavailHeightプロパティー

window.screen.availHeight : デバイス画面上で、ブラウザがWebコンテンツに利用することができる領域の高さをピクセル単位の整数で返す。

let screenHeight = screen.availHeight;

 

 

jQueryで取得する場合

jQueryの場合は、要素の高さを取得するメソッドを利用する。

 

ブラウザのウィンドウ高さを取得する場合は「window」オブジェクトを指定するので、「height()」と「innerHeight()」、「outerHeight()」と「outerHeight(true)」はそれぞれ同じ値になる。

  • height()innerHeight() : スマホでブラウザ固有のメニューバーのリサイズでも変動せず、常に最小のときの表示領域の高さを返す。
  • outerHeight()outerHeight(true) : スマホでブラウザ固有のメニューバーのリサイズで変動する表示領域の高さを返す。

 

1. height()メソッド

要素.height() : 指定した要素の高さを返す。

let windowHeight = $(window).height();

 

2. innerHeight()メソッド

要素.innerHeight() : 指定した要素のpaddingを含めた高さを返す。(borderとmarginは含めない。)

let windowHeight = $(window).innerHeight();

 

3. outerHeight()メソッド

要素.outerHeight() : 指指定した要素のpaddingとborderを含めた高さを返す。(marginは含めない。)

let windowHeight = $(window).outerHeight();

 

4. outerHeight(true)メソッド

要素.outerHeight(true) : 指定した要素のpaddingとborderとmarginを含めた高さを返す。

let windowHeight = $(window).outerHeight(true);

 

 

この記事をシェア
この記事のURL

https://memo.ag2works.tokyo/post-3859/

コピー
この記事のタイトル

ブラウザのウィンドウ高さの取得方法と動作デモ。 | memo メモ [AG2WORKS]

コピー
この記事のリンクタグ

<a href="https://memo.ag2works.tokyo/post-3859/" target="_blank" rel="noopener">ブラウザのウィンドウ高さの取得方法と動作デモ。 | memo メモ [AG2WORKS]</a>

コピー
※ フィールドをクリックでコピーするテキストの編集ができます。

この記事へのコメント

コメントの書き込みはまだありません。

  • コメント内のタグはエスケープ処理され、文字列として出力されます。
  • セキュリティーのため、投稿者のIPアドレスは取得されます。
  • 管理者が内容を不適切と判断したコメントは削除されます。
  • このフォームにはスパム対策として、Googleの提供するreCAPTCHAシステムが導入されています。
    (Google Privacy Policy and Terms of Service.)