ビューポートサイズとスクリーン解像度の違い

CSSビューポートサイズと物理スクリーン解像度の重要な違い、ブラウザクロームとDPRがそれぞれに与える影響、どの測定値をいつ使うべきかを理解します。

Viewport & Screen

詳細な説明

ビューポートとスクリーン解像度

この2つの概念はよく混同されますが、Web開発では異なる目的を果たします。

スクリーン解像度

screen.widthscreen.heightで返され、OSがディスプレイに報告する総ピクセル数を表します。

ビューポートサイズ

ビューポートはWebコンテンツのレンダリングに利用可能な領域です。document.documentElement.clientWidthclientHeightで測定されます。ブラウザのアドレスバー、タブ、スクロールバー、OSタスクバーなどを除外するため、常にスクリーン解像度以下です。

DPRによる複雑さ

DPR 2のMacBook Pro(ネイティブ解像度2560×1600)では:

プロパティ
screen.width 1280(CSSピクセル、スケーリング済み)
screen.height 800
ビューポート幅(概算) 1280(スクロールバー分を除く)
物理ピクセル 2560 × 1600

どれを使うべきか?

  • レイアウトとレスポンシブデザイン: ビューポートサイズ(clientWidth
  • フルスクリーンアプリ: screen.width / screen.height
  • CanvasまたはWebGLレンダリング: ビューポートサイズ × DPR

ユースケース

レスポンシブレイアウトのデバッグを行う開発者は、デバイス間で要素が異なるレンダリングをする理由を理解するために、スクリーン解像度とビューポートサイズを区別する必要があります。

試してみる — Screen Info Display

フルツールを開く