window.innerWidthとwindow.outerWidthの違い

ウィンドウのinner/outer寸法の違い、ブラウザクロームに含まれる要素、各測定値が重要な実用的シナリオを解説します。

Viewport & Screen

詳細な説明

Inner vs Outerウィンドウサイズ

windowオブジェクトはブラウザウィンドウの異なる部分を測定する2組のサイズプロパティを公開しています。

innerWidth / innerHeight

ブラウザウィンドウのコンテンツエリアを測定します。スクロールバーが表示されている場合はそれを含みます。

outerWidth / outerHeight

フレーム、ツールバー、アドレスバー、タブバー、ウィンドウボーダーを含むブラウザウィンドウ全体を測定します。

差分

outerとinnerの差がブラウザ自身のUIが占めるスペースを示します:

const chromeHeight = window.outerHeight - window.innerHeight;
console.log('ブラウザクロームの高さ:', chromeHeight, 'px');

使い分け

  • innerWidth/Height: コンテンツスペースの計算、ポップアップの配置、スクロール動作の決定に使用
  • outerWidth/Height: ウィンドウ全体のフットプリントの確認、開発者ツールパネルの検出に使用
  • clientWidth: CSS相当のビューポート幅(スクロールバーを除外)に使用

ユースケース

レイアウトの問題をデバッグするフロントエンド開発者は、ブラウザクロームとスクロールバーの幅を考慮するためにinner/outer寸法を理解する必要があります。

試してみる — Screen Info Display

フルツールを開く