JavaScriptで画面解像度を検出する方法は?


196

すべてのブラウザで機能する方法はありますか?

回答:


296

元の答え

はい。

window.screen.availHeight
window.screen.availWidth

アップデート 2017-11-10

コメントの津波から:

つまり、モバイルデバイスのネイティブ解像度を取得するには、デバイスのピクセル比を乗算する必要がwindow.screen.width * window.devicePixelRatioありwindow.screen.height * window.devicePixelRatioます。これは、比率が1のデスクトップでも機能します。

そしてベンから別の答えで:

バニラJavaScriptでは、これは利用可能な幅/高さを提供します:

window.screen.availHeight
window.screen.availWidth

絶対的な幅/高さについては、以下を使用します。

window.screen.height
window.screen.width

16
それは今では全く正しくありません。ページズームの可能な変更は考慮されません。
sergzach 2013年

7
@sergzach-その場合$(window).width()、代わりにjQueryを使用します。chaim.devの回答を参照してください
BornToCode

3
正確な画面サイズを取得するには、window.screen.heightおよびwindow.screen.widthを使用します(次の回答で提案されています)。正確なサイズが得られないのは、利用可能な幅と高さをチェックしているためです。つまり、ツールバーの高さ(ウィンドウ7/8では正確に40px)が差し引かれます
ジャルバ

4
画面の解像度がwindow.screen.heightとwidthに合うようにするには、もっと良いのではないでしょうか。なぜavailHeight?例えば、私のavailWidthは、1050年、その実際に1080戻っている
Malavos

5
@eckesを掛ける必要がありますwindow.devicePixelRatio。アレッサンドロスの回答に関する私のコメントを参照してください。
津波

49
var width = screen.width;
var height = screen.height;

1
これはと同等ですwindow.screen。既存の答えに追加するだけです。
Gajus 2014年

3
これが正解です。screen.availHeightブラウザウィンドウで使用可能screen.heightな高さを表示するだけで、画面の正確な高さを表示します。
apnerve 2015

これは、ネイティブの画面解像度ではなく、dpiスケーリングされた解像度を返します。
Dominic Cerisano 2016年

4
つまり、モバイルデバイスのネイティブ解像度を取得するには、デバイスのピクセル比を乗算する必要がwindow.screen.width * window.devicePixelRatioありwindow.screen.height * window.devicePixelRatioます。また、これは1の比率を持つことになりますデスクトップ上で動作します
津波

デスクトップコンピュータは、必ずしも1の比率を持っていません
12Me21

34

バニラJavaScriptでは、これは利用可能な幅/高さを提供します:

window.screen.availHeight
window.screen.availWidth

絶対的な幅/高さについては、以下を使用します。

window.screen.height
window.screen.width

上記の両方は、ウィンドウ接頭辞なしで書くことができます。

jQueryが好きですか?これはすべてのブラウザーで機能しますが、ブラウザーごとに異なる値を提供します。

$(window).width()
$(window).height()

19

ディスプレイの解像度(例:72ドット/インチ)またはピクセルの寸法(ブラウザウィンドウは現在1000 x 800ピクセル)を意味しますか?

画面の解像度により、10ピクセルのラインのインチ単位の太さがわかります。ピクセル寸法は、使用可能な画面の高さの何パーセントが10ピクセル幅の水平線で占められるかを示します。

コンピュータ自体は通常、画面の実際のサイズではなく、ピクセル数しかわからないため、JavaScriptからのみディスプレイの解像度を知る方法はありません。72 dpiが通常の推測です。

ディスプレイの解像度については多くの混乱があることに注意してください。多くの場合、ピクセル解像度の代わりにこの用語を使用しますが、2つはまったく異なります。見るウィキペディアを

もちろん、cmあたりのドット数で解像度を測定することもできます。非正方形の点の不明瞭な主題もあります。しかし、私は余談です。


19

あなたができるjQueryを使用して:

$(window).width()
$(window).height()

私が使用した最も簡単なクロス/すべてのソリューションです。少なくともブラウザの幅について...
Zarne Dravitzki

34
これは、画面の解像度ではなく、ウィンドウのサイズを返します。
ジョナス

19

また、ウィンドウの幅と高さを取得して、ブラウザのツールバーなどを回避することもできます(画面サイズだけでなく)。

これを行うには、window.innerWidth およびwindow.innerHeightプロパティを使用 し ます。w3schoolsで見る

ほとんどの場合、たとえば、完全に中央に配置されたフローティングモーダルダイアログを表示するのが最良の方法です。ブラウザを使用している解像度の向きやウィンドウサイズに関係なく、ウィンドウ上の位置を計算できます。


1
これは最も便利なソリューションです。window.screen.availWidthプロパティは、ビューポートではなく画面を提供します。これは異なる場合があります。ブラウザの最大値がどの程度になるかではなく、実際に使用できる領域を知ることは私にとってより便利です。
マイクマナキー2017

13

これをモバイルデバイスで取得するには、さらにいくつかの手順が必要です。 screen.availWidthデバイスの向きに関係なく同じままです。

これが私のモバイルソリューションです:

function getOrientation(){
    return Math.abs(window.orientation) - 90 == 0 ? "landscape" : "portrait";
};
function getMobileWidth(){
    return getOrientation() == "landscape" ? screen.availHeight : screen.availWidth;
};
function getMobileHeight(){
    return getOrientation() == "landscape" ? screen.availWidth : screen.availHeight;
};

window.orientation未定義を返します...(Firefox 49)screen.orientation.angleは角度を返しますが、ランドスケープモードではすでに0になっています。
ランバート2016年


4
function getScreenWidth()
{
   var de = document.body.parentNode;
   var db = document.body;
   if(window.opera)return db.clientWidth;
   if (document.compatMode=='CSS1Compat') return de.clientWidth;
   else return db.clientWidth;
}

4

将来の参考のために:

function getscreenresolution()
{
    window.alert("Your screen resolution is: " + screen.height + 'x' + screen.width);
}

3

画面の解像度を検出したい場合は、プラグインresをチェックアウトできます。次のことを実行できます。

var res = require('res')
res.dppx() // 1
res.dpi() // 96
res.dpcm() // 37.79527559055118

プラグインの作者であるRyan Van Ettenからのすばらしい解決策のいくつかを以下に示します。

  • 2つのユニットセットが存在し、固定スケールで異なります。デバイスユニットとCSSユニットです。
  • 解像度は、特定のCSSの長さに沿って配置できるドットの数として計算されます。
  • 単位換算:1⁢in=2.54⁢cm=96⁢px=72⁢pt
  • CSSには相対長と絶対長があります。通常のズームの場合:1⁢em=16⁢px
  • dppxは、device-pixel-ratioと同等です。
  • devicePixelRatioの定義はプラットフォームによって異なります。
  • メディアクエリは最小解像度をターゲットにできます。速度に注意して使用してください。

今日の時点でのresのソースコードは次のとおりです。

!function(root, name, make) {
  if (typeof module != 'undefined' && module.exports) module.exports = make()
  else root[name] = make()
}(this, 'res', function() {

  var one = {dpi: 96, dpcm: 96 / 2.54}

  function ie() {
    return Math.sqrt(screen.deviceXDPI * screen.deviceYDPI) / one.dpi
  }

  function dppx() {
    // devicePixelRatio: Webkit (Chrome/Android/Safari), Opera (Presto 2.8+), FF 18+
    return typeof window == 'undefined' ? 0 : +window.devicePixelRatio || ie() || 0
  }

  function dpcm() {
    return dppx() * one.dpcm
  }

  function dpi() {
    return dppx() * one.dpi
  }

  return {'dppx': dppx, 'dpi': dpi, 'dpcm': dpcm}
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.