✊ 필오의 개발일지
Back to Posts
2018년 5월 13일

(mobile) device-pixel-ratio계산

(mobile) device-pixel-ratio계산

목차 👋👋

  1. 서론
  2. @media 대하여..
  3. -webkit-device-pixel-ratio

0. 서론

현재 작업 중인 프로젝트는 데스크탑 브라우저(여러 브라우저 대응) 뿐만아니라 모바일 기기 대응도 진행해야한다. 너무도 당연히 대응해야하지만!! 기기의 종류들의 크기가 다양해짐에 따라서 미디어쿼리를 적절히 사용해야할 필요가 생겼다.(아이폰X나 갤럭시S9같은.. 스크린이 긴 단말기ㅜ) 게다가 네이티브앱에서 웹뷰를 이용하는 일이 빈번했기 때문에 더더욱..


1. 특정 모바일 디바이스 대응 @media

CSS3의 @media 쿼리를 이용해서 screen의 크기에 따라서 레이아웃 구성을 다르게하는 방법을 구현할 수 있다. 반응형 웹에서는 다른 특별한 설정 없이 max-width같은 media features를 추가하여 브라우저의 width값마다 스타일을 조정할 수 있다.

/*syntax*/ @media not|only (media type) and (media feature) { CSS-Code; }

media type

media features(조건문)

(정말 많군요! 👀)








2. -webkit-device-pixel-ratio

사실 단말기에 따른 media query는 인터넷 서핑을 잘 하다보면 구할 수 있다. (여긴  내가 좋아하는 정리 사이트) 나 또한 정리되어있는 자료에서 device width와 height, -webkit-min-device-pixel-ratio를 구할 수 있었다. 정리된 수치로 잘 사용하고 있었지만, 종종 서치하기 힘든 디바이스까지 대응해야할 경우도 생기곤 한다. 그리고 나에게도 그런 상황이 다가왔다!

1. 픽셀 비율을 계산해보자.

내가 대응해야할 폰은 LG X400이라는 디바이스였다. 최근에 나온 기종이고, 내가 알 수 있는 정보는 아래 표밖에 없었다.

5.3인치 1280*720, 294ppi

@media only screen and (device-width: ?px) and (device-height: ?px) and (-webkit-device-pixel-ratio: ?)

위의 값들이 필요하다. 먼저 픽셀 비율부터 구해보자. 디바이스 픽셀 비율을 계산하는 데는 세 단계가 필요하다.

1-1. 들고있는 디바이스로부터 시야까지의 실제 거리와 레퍼런스 픽셀의 거리를 비교.

스펙에 따르면 28인치에서 이상적인 것은 인치 당 96 픽셀이다.(표준밀도는 96ppi) 그러나 스마트 폰이기때문에 사람들은 노트북을 들고 다니는 것보다 디바이스를 얼굴에 가깝게 들고있는다. 그 거리를 18 인치로 추정 해본다.

1-2. 주어진 거리에 대해 이상적인 픽셀 밀도를 얻으려면 거리 비에 표준 밀도 (96ppi)를 곱한다.

idealPixelDensity = (28/18) * 96 = 150 픽셀/인치 (대략)

1-3. 물리적 픽셀 밀도와 이상적인 픽셀 밀도의 비율을 사용하여 장치 픽셀 비율을 얻는다.

devicePixelRatio = 294/150 = 1.96 => 반올림 => 2


2. device-width와 height

현재 알 수 있었던 해상도는 표에서 1280*720 라고 알 수 있었다. device의 너비와 height는 픽셀 비율을 해상도에서 나누면 된다.


@media only screen and (device-width: 360px) and (device-height: 640px) and (-webkit-device-pixel-ratio: 2) { 💅💅💅💅 }

요약


참고

https://medium.com/@junghan_61455/css-media-query-5969b004bd7  https://www.html5rocks.com/en/mobile/high-dpi/ 

Previous12/ File Api와 이미지 용량 줄이기
Next(번역) Angular의 observable을 이해하고, 생성하고, 구독해보기

Related

© 2025 Felix