JavaScript로 화면 해상도를 감지하는 방법은 무엇입니까?


196

모든 브라우저에서 작동하는 방법이 있습니까?

답변:


295

원래 답변

예.

window.screen.availHeight
window.screen.availWidth

최신 정보2017-11-10

에서 쓰나미 코멘트에 :

모바일 장치, 즉 모바일 장치의 기본 해상도를 얻으려면 장치 픽셀 비율을 곱해야합니다 : window.screen.width * window.devicePixelRatiowindow.screen.height * window.devicePixelRatio. 이것은 또한 비율이 1 인 데스크톱에서도 작동합니다.

그리고 또 다른 대답으로 으로부터 :

바닐라 JavaScript에서는 너비 / 높이를 사용할 수 있습니다.

window.screen.availHeight
window.screen.availWidth

절대 너비 / 높이에는 다음을 사용하십시오.

window.screen.height
window.screen.width

16
지금은 정확하지 않습니다. 가능한 페이지 확대 / 축소 변경은 고려하지 않습니다.
sergzach

7
@sergzach-이 경우 jQuery를 $(window).width()대신 사용 하겠습니다. chaim.dev의 답변을 참조하십시오
BornToCode

3
window.screen.height 및 window.screen.width를 사용하여 정확한 화면 크기를 얻으십시오 (다음 답변에서 제안 된대로). 정확한 크기를 얻지 못하는 이유는 사용 가능한 너비와 높이를 확인하고 있기 때문입니다. 이는 도구 모음 높이 (Windows 7/8에서는 정확히 40px 임)를 뺀다는 것을 의미합니다.
Jaruba

4
화면 해상도가 window.screen.height 및 width와 함께 사용하는 것이 좋지 않을까요? 왜 availHeight? 예를 들어 나의 availWidth는 실제로 1080 일 때 1050을 반환합니다.
Malavos

5
@eckes와 곱해야 window.devicePixelRatio합니다. Alessandros 답변에 대한 내 의견을 참조하십시오.
쓰나미

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

1
이는에 해당 window.screen합니다. 기존 답변에 추가해야합니다.
Gajus

3
실제로 이것은 정답입니다. screen.availHeight브라우저 창에서 사용 가능한 높이를 screen.height제공하고 화면의 정확한 높이 를 제공합니다.
apnerve

기본 화면 해상도가 아닌 dpi 스케일 해상도를 반환합니다.
Dominic Cerisano 2016 년

4
모바일 장치, 즉 모바일 장치의 기본 해상도를 얻으려면 장치 픽셀 비율을 곱해야합니다 : window.screen.width * window.devicePixelRatiowindow.screen.height * window.devicePixelRatio. 이것은 또한 1의 비율을 갖는 데스크탑에서 작동합니다.
쓰나미

데스크탑 컴퓨터는 반드시 1의 비율을 가질 필요는 없습니다.
12Me21

34

바닐라 자바 스크립트, 이것은 당신에게 줄 것이다 AVAILABLE 너비 / 높이 :

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는 일반적인 추측입니다 ....

디스플레이 해상도에 대해 많은 혼동이 있습니다. 사람들은 종종 픽셀 해상도 대신이 용어를 사용하지만 둘은 상당히 다릅니다. Wikipedia 참조

물론 cm 당 도트 수로 해상도를 측정 할 수도 있습니다. 사각형이 아닌 점의 모호한 주제도 있습니다. 그러나 나는 산만하다.


19

jQuery를 사용하면 다음을 수행 할 수 있습니다.

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

내가 사용한 가장 쉬운 크로스 / 모든 솔루션입니다. 브라우저 폭이 적어도 ... 들어
Zarne Dravitzki

34
화면 해상도가 아닌 창의 크기를 반환합니다.
조나스

19

또한 브라우저 도구 모음 및 화면 크기를 피하면서 창 너비와 높이를 얻을 수 있습니다.

이렇게하려면 : window.innerWidthwindow.innerHeight속성을 사용하십시오 . w3schools에서 참조하십시오 .

대부분의 경우, 예를 들어 완벽하게 중앙에 떠있는 부동 모달 대화 상자를 표시하는 것이 가장 좋은 방법입니다. 브라우저를 사용하는 해상도 방향 또는 창 크기에 관계없이 창에서 위치를 계산할 수 있습니다.


1
이것이 가장 유용한 솔루션입니다. window.screen.availWidth 속성은 뷰포트가 아닌 SCREEN을 제공합니다. 브라우저의 최대 값이 아닌 실제 사용 가능한 부동산의 양을 아는 것이 더 유용합니다.
Mike Mannakee

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.orientationundefined ... (Firefox 49) screen.orientation.angle는 각도를 반환하지만 가로 모드에서는 이미 0입니다.
Lambart


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

화면 해상도를 감지하려면 플러그인 해상도 를 확인하십시오 . 다음을 수행 할 수 있습니다.

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

다음은 플러그인 작성자 인 Ryan Van Etten의 훌륭한 해결책 입니다.

  • 장치 단위와 CSS 단위의 두 가지 단위 집합이 존재하며 고정 된 크기로 다릅니다.
  • 해상도는 특정 CSS 길이에 맞는 도트 수로 계산됩니다.
  • 단위 변환 : 1 인치 = 2.54cm = 96px = 72pt
  • CSS는 상대 길이와 절대 길이를 가지고 있습니다. 일반 줌에서 : 1em = 16px
  • dppx는 장치 픽셀 비율과 같습니다.
  • 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.