如何用JavaScript检测屏幕分辨率?

185 javascript screen-resolution

有没有一种方法适用于所有浏览器?

Joh*_*don 280

原始答案

是.

window.screen.availHeight
window.screen.availWidth
Run Code Online (Sandbox Code Playgroud)

更新 2017-11-10

来自Tsunamis的评论:

要获得移动设备的原始分辨率,您必须乘以设备像素比率:window.screen.width * window.devicePixelRatiowindow.screen.height * window.devicePixelRatio.这也适用于台式机,其比率为1.

来自Ben的另一个答案是:

在vanilla JavaScript中,这将为您提供可用的宽度/高度:

window.screen.availHeight
window.screen.availWidth
Run Code Online (Sandbox Code Playgroud)

对于绝对宽度/高度,请使用:

window.screen.height
window.screen.width
Run Code Online (Sandbox Code Playgroud)

  • 现在不太正确.它不考虑可能更改页面缩放. (14认同)
  • @sergzach - 在这种情况下,我会使用jQuery的`$(window).width()`,请参阅chaim.dev的回答 (7认同)
  • 屏幕分辨率与window.screen.height和width一起使用会不会更好?为什么availHeight?例如,我的availWidth返回1050,实际是1080. (4认同)
  • @eckes你必须乘以`window.devicePixelRatio`.请参阅我对Alessandros答案的评论. (4认同)
  • 使用window.screen.height和window.screen.width来获取确切的屏幕大小(如下一个答案所示).你没有得到确切大小的原因是它检查可用的宽度和高度,这意味着它将减去工具栏高度(在Windows 7/8上恰好是40px) (3认同)

小智 49

var width = screen.width;
var height = screen.height;
Run Code Online (Sandbox Code Playgroud)

  • 这相当于“window.screen”。应该将其添加到现有答案中。 (3认同)
  • 实际上这是正确的答案.`screen.availHeight`只是在浏览器窗口中给出了可用的高度,而`screen.height`给出了屏幕的确切高度. (3认同)
  • 要获得移动设备的原始分辨率,您必须乘以设备像素比率:`window.screen.width*window.devicePixelRatio`和`window.screen.height*window.devicePixelRatio`.这也适用于台式机,其比率为1. (3认同)
  • 台式电脑的比率不一定是 1。 (2认同)

Ben*_*Ben 34

在vanilla JavaScript中,这将为您提供可用的宽度/高度:

window.screen.availHeight
window.screen.availWidth
Run Code Online (Sandbox Code Playgroud)

对于绝对宽度/高度,请使用:

window.screen.height
window.screen.width
Run Code Online (Sandbox Code Playgroud)

以上两者都可以在没有窗口前缀的情况下编写.

喜欢jQuery?这适用于所有浏览器,但每个浏览器都提供不同的值.

$(window).width()
$(window).height()
Run Code Online (Sandbox Code Playgroud)


Lar*_*y K 19

你的意思是显示分辨率(例如每英寸72点)或像素尺寸(浏览器窗口目前是1000 x 800像素)?

通过屏幕分辨率,您可以了解10像素线的英寸厚度.像素尺寸可以告诉您10像素宽水平线占据可用屏幕高度的百分比.

由于计算机本身通常不知道屏幕的实际尺寸,只知道像素数,因此无法仅通过Javascript了解显示分辨率.72 dpi是通常的猜测....

请注意,显示分辨率存在很多混淆,通常人们使用术语而不是像素分辨率,但两者是完全不同的.见维基百科

当然,您也可以测量每厘米点数的分辨率.还有一个非方形点的模糊主题.但我离题了.


小智 19

使用jQuery,您可以:

$(window).width()
$(window).height()
Run Code Online (Sandbox Code Playgroud)

  • 这将返回窗口的大小,而不是屏幕分辨率. (34认同)

ser*_*er2 18

您还可以获得WINDOW的宽度和高度,避免浏览器工具栏和...(不仅仅是屏幕大小).

为此,请使用: window.innerWidthwindow.innerHeightproperties.在w3schools看到它.

在大多数情况下,它将是显示完美居中的浮动模态对话框的最佳方式.它允许您计算窗口上的位置,无论使用浏览器的分辨率方向或窗口大小.

  • 这是最有用的解决方案。window.screen.availWidth 属性提供的是 SCREEN,而不是视口,这可能会有所不同。对我来说更有用的是知道我实际可以使用多少空间,而不是浏览器的最大值可能是/变成多少。 (2认同)

pos*_*abs 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;
};
Run Code Online (Sandbox Code Playgroud)