ACCNCC
@ACCNCC
Делаю игры!

Как определить диагональ экрана телефона в дюймах на javascript?

Как определить диагональ экрана телефона на javascript?
  • Вопрос задан
  • 3234 просмотра
Пригласить эксперта
Ответы на вопрос 2
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
В пикселях:

function getPxDiag(){
   var scW = screen.width, scH = screen.height;
   //return Math.hypot(scW, scH) - не работает в IE
   return Math.sqrt( Math.pow(scW, 2) + Math.pow(scH, 2) );
}


UPD:

Чтобы перевести в дюймы нужно знать количество точек на линейный дюйм (DPI). Для этого можно воспользоваться старенькой единицей изменения CSS - in. Минус этого метода в том, что придется засунуть в DOM лишний элемент.

<div id="inch" style="width:1in;"></div>

//Общая формула: PIXEL = INCHES / (1 / DPI);
function getInchDiag(){
  var DPI = inch.offsetWidth;
  return getPxDiag() * (1/DPI);
}

alert( getInchDiag() );


jsfiddle.net/In4in/yboco3wd

Интересный момент - данный вариант, а так же вариант от riot26 показывают на 5 дюймов больше для моего устройства, без понятия почему.

UPD 2:
Собственно, оказалось это связанно с тем, что на большей части устройств браузером (или чем-то там еще, не разбираюсь) неправильно определяется DPI (в 96 точек на дюйм) и 1in, соотвественно, имеет ширину меньше, чем реальный дюйм.

Как исправить? -Без понятия :(
Ответ написан
Stalker_RED
@Stalker_RED
www.quirksmode.org/mobile/viewports.html (перевод)
tl;dr
использовать device-width и device-height в css
или screen.width и screen.height в js
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы