장치 픽셀 비율은 정확히 무엇입니까?


170

이것은 모바일 웹에 대한 모든 기사에서 언급되었지만,이 속성이 정확히 무엇을 측정하는지에 대한 설명을 찾을 수 없습니다.
누구 든지이 검사와 같은 쿼리가 무엇인지 자세히 설명해 주시겠습니까?

@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (-o-device-pixel-ratio: 3/2), 
only screen and (min-device-pixel-ratio: 1.5) {

    //high resolution images go here

}

답변:


161

짧은 답변

장치 픽셀 비율은 실제 픽셀과 논리 픽셀 간의 비율입니다. 예를 들어, 물리적 선형 해상도가 논리적 선형 해상도의 두 배이기 때문에 iPhone 4 및 iPhone 4S는 2의 장치 픽셀 비율을보고합니다.

  • 물리적 해상도 : 960 x 640
  • 논리적 해상도 : 480 x 320

공식은 다음과 같습니다.

linres_p / linres_l

어디:

linres_p는 IS 물리적 선형 해상도는

과:

linres_l논리적 선형 분해능

다른 장치는 정수가 아닌 것을 포함하여 다른 장치 픽셀 비율을보고합니다. 예를 들어 Nokia Lumia 1020은 1.6667, Samsumg Galaxy S4는 3, Apple iPhone 6 Plus는 2.46 (출처 : dpilove )을보고 합니다. 그러나 특정 장치를 위해 설계해서는 안되므로 원칙적으로 아무것도 변경되지 않습니다.

토론

CSS "픽셀"은 "일부 화면에서 하나의 그림 요소"로 정의되는 것이 아니라 팔 길이에서 약 1 인치 인 시야각의 비선형 각도 측정 으로 정의 0.0213 °됩니다 1/96. 출처 : CSS 절대 길이

이는 고화질 이미지 리소스를 준비하고 다른 이미지를 다른 장치 픽셀 비율로 신중하게 적용하는 것과 같이 웹 디자인에 많은 영향을 미칩니다. 로우 엔드 장치가 고해상도 이미지를 강제로 다운로드하지 않고 로컬로 다운 스케일링하기를 원할 것입니다. 또한 고급형 장치가 흐릿한 사용자 경험을 위해 저해상도 이미지를 업 스케일하지 않기를 바랍니다.

비트 맵 이미지가 붙어있는 경우 여러 장치 픽셀 비율을 수용하려면 CSS 미디어 쿼리 를 사용 하여 장치 그룹마다 다른 리소스 집합을 제공 해야 합니다. 이것을 좋은 트릭과 결합 background-size: cover하거나 명시 적 background-size으로 백분율 값 으로 설정하십시오 .

#element { background-image: url('lores.png'); }

@media only screen and (min-device-pixel-ratio: 2) {
    #element { background-image: url('hires.png'); }
}

@media only screen and (min-device-pixel-ratio: 3) {
    #element { background-image: url('superhires.png'); }
}

이런 식으로 각 장치 유형은 올바른 이미지 리소스 만로드합니다. 또한 pxCSS 의 단위는 항상 논리 픽셀에서 작동합니다 .

벡터 그래픽의 경우

점점 더 많은 장치 유형이 나타날수록 모든 장치에 적절한 비트 맵 리소스를 제공하는 것이 더 까다로워집니다. CSS에서 미디어 쿼리는 현재 유일한 방법이며 HTML5에서는 picture 요소 를 사용하여 다른 미디어 쿼리에 대해 서로 다른 소스를 사용할 수 있지만 대부분의 웹 개발자는 여전히 IE11을 더 오랫동안 지원해야하기 때문에 여전히 100 %가 아닙니다 ( 출처 : caniuse ) .

사진이 아닌 아이콘, 라인 아트 및 디자인 요소에 대한 선명한 이미지가 필요한 경우 SVG에 대해 생각해야합니다. SVG는 모든 해상도로 아름답게 확장됩니다.


1
고마워, 그래서 아이폰 4에 대한 CSS 파일을 만들고 480 x 320의 페이지 CSS 측정을 제공하면 width=device-width전체 화면으로 확장됩니까?
ilyo

1
바로 그거죠. 에 고해상도 사진을 사용하는 경우 이미지 크기가 논리 픽셀 수를 따르기 때문에 background-image와 결합 할 수 있습니다 . w3.org/TR/2002/WD-css3-background-20020802/#background-size-webkit-background-size:50%
Anders Tornblad

2
당신은 할 수 없습니다. 논리 픽셀을 사용하여 요소를 배치하고 고해상도 이미지와 background-size디스플레이를 최적으로 사용하기위한 트릭을 사용해야 합니다.
Anders Tornblad

2
나는 안드로이드 케이스에 대해 모른다. 제조업체마다 논리적 및 물리적 픽셀에 대한 아이디어가 다를 수 있습니다. 수백 가지의 다른 장치에서 직접 사용해보십시오. 또는 단순히 장치에서보고 한 값이 올바른 것으로 가정하십시오. 특정 장치를 위해 디자인하지 말고 미디어 쿼리를 사용하여 값 범위를 디자인하십시오!
Anders Tornblad

2
@atornblad 나는 "사이에 .. 그것을해야한다고 생각 물리적논리적 픽셀"
일리아 Buziuk

159

장치 픽셀 비율 == CSS 픽셀 비율

웹 개발의 세계에서 장치 픽셀 비율 (CSS 픽셀 비율이라고도 함)은 CSS가 장치의 화면 해상도를 해석하는 방법을 결정합니다.

브라우저의 CSS는 다음 공식으로 장치의 논리적 (또는 해석 된) 해상도를 계산합니다.

공식

예를 들면 다음과 같습니다.

애플 아이폰 6s

  • 실제 해상도 : 750 x 1334
  • CSS 픽셀 비율 : 2
  • 논리적 해결 :

공식

웹 페이지를 볼 때 CSS는 장치에 375x667 해상도 화면 이 있다고 생각 하고 미디어 쿼리는 화면이 375x667 인 것처럼 응답 합니다. 그러나 화면에 렌더링 된 요소는 실제 화면에 두 배의 물리적 픽셀이 있기 때문에 실제 375x667 화면보다 두 배 더 선명합니다.

다른 예 :

삼성 갤럭시 S4

  • 실제 해상도 : 1080 x 1920
  • CSS 픽셀 비율 : 3
  • 논리적 해결 :

공식

아이폰 5s

  • 실제 해상도 : 640 x 1136
  • CSS 픽셀 비율 : 2
  • 논리적 해결 :

공식

장치 픽셀 비율이 존재하는 이유는 무엇입니까?

CSS 픽셀 비율이 만들어진 이유는 휴대 전화 화면의 해상도가 높아짐에 따라 모든 기기의 CSS 픽셀 비율이 여전히 1 인 경우 웹 페이지가 너무 작아 렌더링되지 않기 때문입니다.

일반적인 전체 화면 데스크톱 모니터는 1920x1080 해상도에서 약 24 인치입니다. 모니터가 약 5 인치로 줄었지만 해상도가 같은 경우를 상상해보십시오. 화면에서 사물을 보는 것은 너무 작아서 불가능합니다. 그러나 현재 제조업체는 1920x1080 해상도의 전화 화면을 지속적으로 제공하고 있습니다.

따라서 휴대폰 제조업체는 장치 픽셀 비율을 발명하여 화면의 요소를 너무 작게 보거나 읽지 않고도 휴대폰 화면의 해상도, 선명도 및 품질을 계속해서 높일 수있었습니다.

다음은 현재 장치의 픽셀 밀도를 알려주는 도구입니다.

http://bjango.com/articles/min-device-pixel-ratio/


위키피디아 기사가 삭제되었습니다. :-(이 정보를 사용할 어느 곳인가?
사이먼 동

1
따라서 이미지는 높은 dpi 또는 물리적 픽셀과 일치하도록 조정됩니다. 이미지가 300px, 논리 / css px도 300이지만 물리적 px는 600이라고 말하면 이미지 너비를 설정하면 이미지가 늘어났다는 것을 의미합니다. 또한 때로는 높은 dpi에서 이미지가 더 작아지는 것을 들었습니다.
Muhammad Umer 2016 년

2
@MuhammadUmer 예제에서 300px 이미지 width: 100%는 디스플레이의 전체 너비가됩니다. 늘어나지 않습니다. 화면은 300 픽셀로 표시됩니다. 논리 / CSS 해상도에 따라 이미지가 표시됩니다. 이제 귀하의 예에서 600px 이미지를 대신 제공 할 수도 있습니다. 논리적 300px 디스플레이의 전체 너비이지만 디스플레이가 기본 600px이므로 이미지는 원래 300px 이미지보다 두 배 선명하게 보입니다. 더 큰 이미지이지만 디스플레이에 모든 추가 픽셀이 있으므로 더 좋아 보입니다. 이것이 "Retina Displays"의 아이디어입니다.
Jake Wilson

@JakeWilson : 이것은 저에게 새로운 주제이며 완전히 이해하지 못합니다. 예제 CSS 픽셀 비율은 2입니다. 사진의 너비는 300 픽셀이며 CSS에서는 100 %로 설정하므로 너비는 300 CSS 픽셀이됩니다. CSS px 비율은 2이므로 너비가 600 픽셀이되고 너비는 디스플레이 너비와 정확히 일치합니다. 그러나 원래 너비가 300 물리적 픽셀이고 이제 600 물리적 픽셀이면 어떻게 늘어나지 않습니까? 내 이해는 물리적으로 300에서 600px로 늘어났기 때문에 품질이 낮다는 것입니다. 좀 더 자세히 설명해 주시겠습니까?
Peter

1
@Anuj 모르겠다. 하드웨어 / 소프트웨어에 어떻게 정의되어 있는지는 중요하지 않다. 하나는 다른 방법으로 잘라냅니다.
Jake Wilson

9

https://developer.mozilla.org/en/CSS/Media_queries#-moz-device-pixel-ratio

-moz-device-pixel-ratio
CSS 픽셀 당 장치 픽셀 수를 제공합니다.

이것은 거의 자기 설명입니다. 숫자는 하나의 "가상"픽셀 (CSS에서 설정된 크기)을 표시하는 데 사용되는 "실제"픽셀 (화면의 물리적 픽셀)의 비율을 나타냅니다.


4
장치가 가상 픽셀 측정을 전혀 사용하지 않는지 어떻게 알 수 있습니까? 가상이 아닌 CSS 측정에서 장치 픽셀을 어떻게 사용합니까?
ilyo

슬프게도, 당신은 그것을 구글이나 실제 장치에서 테스트해야합니다 :(
netalex

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.