現役システムエンジニアの備忘録

技術スキルや用語などの記録を残していきます

Screen(画面情報)

JavaScript screen.heightの使い方|画面高さの取得【JavaScript入門】

投稿日:2019年5月28日 更新日:

この記事で分かること

  • screen.heightで画面の高さを取得する方法
  • screen.heightの単位と、物理的な画素数との違い
  • screen.availHeightやブラウザーの表示領域との使い分け
  • コードを試して、取得した値を確認する手順
  • 画面の高さをレイアウト調整に使う場合の注意点

画面の高さをJavaScriptで取得したいときは、screen.heightを使います。ただし、取得値はモニターの物理的な画素数そのものではありません。

この記事では、値の意味と使い方をコード例で説明します。画面全体の高さと、ブラウザー内でページを表示できる高さを取り違えないための選び方も分かります。



screen.heightで取得できる値

screen.heightは、画面の高さをCSSピクセル単位で返します。

補足:CSSピクセルとは?
Webページの大きさを指定するときに使う、画面上の基準となる単位です。画面を構成する実際の点の数とは、同じとは限りません。

JavaScriptは、Webページに動きを付けたり、ページ上の情報を扱ったりするためのプログラミング言語です。

補足:プログラミング言語とは?
コンピューターにしてほしいことを、決められた書き方で伝えるための言葉です。

screen.heightのように、決まった対象から値を読み取るための名前を「プロパティ」といいます。ここでは、screenが画面についての情報を持ち、heightがその高さを表します。

補足:プロパティとは?
何かが持っている情報に付けられた名前です。たとえば、人の情報に「名前」や「年齢」があるのと似ています。

ここでいう「画面の高さ」は、画面を構成する物理的な点の数と必ず一致する値ではありません。画面の大きさや表示設定によって、物理画素とCSSピクセルの対応は変わることがあります。

補足:物理画素とは?
画面に画像や文字を表示するため、実際の画面に並んでいる小さな点のことです。

screen.heightは、画面に関する情報をJavaScriptから読めるようにする機能の一つです。「API」とは、別のプログラムが機能や情報を使うための窓口を指します。

補足:APIとは?
Application Programming Interfaceの略です。別のプログラムに、決められた方法で機能や情報を使わせるための窓口です。
注意:「フルHD画面だから必ずscreen.heightが1080になる」とは限りません。物理画素数とCSSピクセルは別の単位なので、取得値を物理的な画面の点の数と同じだと決めつけないでください。

screen.heightと関連する高さの違い

screen.height、screen.availHeight、window.innerHeightは、どの範囲の高さを調べたいかで使い分けます。

ブラウザーは、Webページを開いて読むためのアプリです。

補足:ブラウザーとは?
Google ChromeやSafariなど、Webページを見るためのアプリです。
調べたいもの 使う名前 値が表す範囲
画面の高さ screen.height 画面の高さをCSSピクセルで表した値
画面のうち、利用できる高さ screen.availHeight 画面上のシステム用領域などを除いた高さ。何が除かれるかは環境によって異なる
ブラウザー内でページを表示する領域の高さ window.innerHeight ページの表示領域の高さをCSSピクセルで表した値

たとえば、ブラウザーの外枠やパソコンの画面上のシステム用領域があると、画面全体の高さとページを表示できる高さは異なります。画面全体を調べるならscreen.height、ページの表示領域を調べるならwindow.innerHeightを選びます。

windowは、ブラウザーで開いているページを表示する領域などを扱うものです。

画面上のシステム用領域には、たとえばタスクバーのようなものがあります。

補足:タスクバーとは?
パソコンの画面の端に表示され、アプリの切り替えなどに使う帯状の場所です。

screen.availHeightがどの範囲を表すかは、利用環境によって確認が必要です。画面全体の高さと利用可能な高さの違いを詳しく知りたい場合は、【JavaScript入門】screen.availHeightとは?有効表示領域の高さを取得する方法をわかりやすく解説も参考にしてください。

次の図は、画面全体の高さと、システム用領域を除いた高さの関係を示したものです。実際に除かれる領域や位置は環境によって異なります。

screen.heightは画面全体の高さを、screen.availHeightはシステム用領域などを除いた利用可能な高さを表します。どの領域が除かれるかは環境によって異なります。



画面の高さを取得するコード

次の例では、screen.height、screen.availHeight、window.innerHeightの値をページ内に表示します。HTMLはページの見出しや文章などを作るための書き方です。

補足:HTMLとは?
HyperText Markup Languageの略です。Webページに見出しや文章などを置き、内容のまとまりを示すための書き方です。

コードは説明用の例です。実際の取得値は、使う画面やブラウザーなどの環境で変わります。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>画面の高さを確認</title>
</head>
<body>
  <h1>画面の高さ</h1>
  <p id="result"></p>

  <script>
    const result = document.getElementById("result");

    result.textContent =
      "screen.height: " + window.screen.height + " CSSピクセル / " +
      "screen.availHeight: " + window.screen.availHeight + " CSSピクセル / " +
      "window.innerHeight: " + window.innerHeight + " CSSピクセル";
  </script>
</body>
</html>

この例では、document.getElementById("result")で、ページ内のidがresultの場所を見つけます。見つけた場所に、3つの値を文章として表示しています。

documentはページの内容を扱うための名前です。

補足:documentとは?
今開いているWebページの内容を指す名前です。ページ上の文章や入力欄などを見つけるときに使います。

idは、ページ内の場所を区別するために付ける名前です。

補足:idとは?
ページの中の特定の場所を見分けるための名前です。同じページ内で、場所ごとに付けます。

textContentは、その場所に表示する文字を指定するために使っています。ここでは、取得した数値を説明の文字とつなげて表示します。

コードを試す手順

  1. 上のコードをすべてコピーします。
  2. テキストを編集できるアプリに貼り付け、screen-height.htmlという名前で保存します。
  3. 保存したファイルをブラウザーで開きます。
  4. 画面に3つの高さが表示されることを確認します。
  5. ブラウザーのウィンドウの高さを変え、window.innerHeightの値がどう変わるかを確認します。

表示結果の例:実際に表示される数値は環境によって異なります。次は、表示の形を示すための例であり、特定の環境で測定した結果ではありません。

screen.height: (取得した数値) CSSピクセル / screen.availHeight: (取得した数値) CSSピクセル / window.innerHeight: (取得した数値) CSSピクセル

画面上に値が表示されない場合は、コードを途中までしかコピーしていない、またはHTMLファイルとして保存できていない可能性があります。コード全体をコピーし、ファイル名の末尾が.htmlになっているか確認してください。

画面の高さをレイアウト調整に使うときの注意点

画面の高さに応じてページの見た目を変えることを、レイアウト調整といいます。ページの表示領域に合わせて内容を配置したい場合、screen.heightはブラウザーの表示領域そのものではないため、値をそのまま使うと意図と違う結果になることがあります。

補足:レイアウト調整とは?
文章や画像などを、画面の大きさや形に合わせて見やすく配置することです。

ページの表示領域の高さを基準に処理したい場合は、window.innerHeightを検討します。画面全体の高さを調べる目的であればscreen.heightを使います。

注意:screen.heightの値を物理画素数とみなしたり、ブラウザーの表示領域の高さとして扱ったりしないでください。調べたい範囲に合った値を選びます。

ブラウザーの拡大・縮小や画面回転が値に与える影響は、利用環境をそろえて確認してください。確認していない環境の挙動を一律に決めつけることはできません。

画面の幅も含めて調べたい場合は、【JavaScript入門】screen.widthとは?モニタの幅(画面サイズ)を取得する方法をわかりやすく解説を参照してください。JavaScriptの画面情報を順に学ぶには、JavaScript Screenロードマップ|初心者が最短で画面情報APIを理解するためのガイドが入口になります。

仕様の確認先と検証状況

screen.heightとscreen.availHeightの説明は、次の資料で確認できます。

この記事の改修案では、特定のOS・ブラウザー・バージョンでの動作確認は行っていません。検証環境と確認日、実際に表示された値は未確認です。公開前に、対象環境でコードを実行して記録してください。

確認前の注意:画面の回転やブラウザーの拡大・縮小による値の変化について、この記事では検証結果を示していません。具体的な挙動を掲載する場合は、対象環境と確認日を添えてください。

screen.heightに関するよくある質問

Q1

screen.heightの単位は何ですか?

A

CSSピクセルです。画面の物理画素数と同じとは限らないため、取得値を物理的な点の数として扱わないでください。

Q2

screen.heightとscreen.availHeightはどう違いますか?

A

screen.heightは画面の高さ、screen.availHeightは画面のうち利用できる高さを表します。システム用領域の扱いは環境によって異なるため、必要なら実際の環境で値を確かめてください。

Q3

ブラウザー内でページを表示できる高さを取得するには、どれを使いますか?

A

ページを表示する領域の高さを調べる場合は、window.innerHeightを使います。画面全体の高さを調べるscreen.heightとは目的が異なります。

Q4

スマートフォンを回転させると、screen.heightの値は変わりますか?

A

回転時の値を一律には断定できません。スマートフォンとブラウザーの組み合わせでコードを実行し、回転前後の値を確認してください。

Q5

画面の高さに合わせてページの配置を変えるとき、screen.heightを使えばよいですか?

A

ページの表示領域に合わせたい場合は、window.innerHeightなど、目的に合う値を選びます。screen.heightはブラウザー内のページ表示領域の高さではありません。



まとめ

  • screen.heightは、画面の高さをCSSピクセルで返します。
  • CSSピクセルと物理画素数は、同じとは限りません。
  • screen.availHeightは画面のうち利用できる高さを表します。
  • ページを表示する領域の高さを調べるなら、window.innerHeightを検討します。
  • 画面回転や拡大・縮小による変化は、対象環境で確認してから説明します。

まずはコードを実行し、画面全体の高さとページ表示領域の高さを見比べてください。JavaScriptの画面情報を続けて学ぶ場合は、Screenロードマップも活用できます。

このブログは Xserver 上の WordPress で運用しています。
表示速度が速く、安定しているのでブログ初心者にもおすすめです。

→ レンタルサーバー エックスサーバー

-Screen(画面情報)

執筆者: