Вы не можете получить реальные физические размеры или фактический DPI, и даже если бы вы могли, вы ничего не можете с ними сделать.
Это довольно длинная и сложная история, так что простите меня.
Интернет и все браузеры определяют 1 пиксель как единицу, называемую пикселем CSS. Пиксель CSS - это не настоящий пиксель, а единица измерения, которая считается равной 1/96 дюйма в зависимости от угла обзора устройства. Он указан как опорный пиксель .
Контрольный пиксель - это угол обзора одного пикселя на устройстве с плотностью пикселей 96 точек на дюйм и расстоянием от считывающего устройства на расстоянии вытянутой руки. Таким образом, для номинальной длины руки 28 дюймов угол обзора составляет около 0,0213 градуса. Таким образом, для чтения на расстоянии вытянутой руки 1 пиксель соответствует примерно 0,26 мм (1/96 дюйма).
В 0,26 мм пространства у нас может быть очень много пикселей реального устройства.
Браузер делает это в основном по устаревшим причинам - большинство мониторов с разрешением 96 точек на дюйм, когда зародился Интернет, - но также и для единообразия, в «старые времена» кнопка 22 пикселей на 15-дюймовом экране с разрешением 800x600 была бы вдвое больше, чем кнопка 22 пикселей на 15-дюймовый монитор с разрешением 1600x1200. В этом случае DPI экрана фактически составляет 2x (вдвое больше разрешения по горизонтали, но в том же физическом пространстве). Это плохая ситуация для Интернета и приложений, поэтому большинство операционных систем разработали множество способов абстрагирования значений пикселей в независимые от устройства единицы (DIPS на Android, PT на iOS и CSS Pixel в Интернете ).
Браузер iPhone Safari был первым (насколько мне известно) представил концепцию области просмотра. Это было создано для того, чтобы приложения в стиле рабочего стола отображались на маленьком экране. Область просмотра была определена как ширина 960 пикселей. Это существенно увеличило масштаб страницы в 3 раза (iphone изначально был 320 пикселей), так что 1 пиксель CSS составляет 1/3 физического пикселя. Когда вы определили область просмотра, вы могли заставить это устройство соответствовать 1 пикселю CSS = 1 реальному пикселю при 163dpi.
Использование области просмотра, ширина которой равна «ширине устройства», освобождает вас от необходимости устанавливать ширину области просмотра для каждого устройства в соответствии с оптимальным размером пикселя CSS, браузер просто сделает это за вас.
С введением устройств с двойным DPI производители мобильных телефонов не хотели, чтобы мобильные страницы казались меньше на 50%, поэтому они ввели концепцию под названием devicePixelRatio (я полагаю, сначала на мобильном веб-наборе), это позволяет им сохранять 1 пиксель CSS примерно равным 1 /. 96-я часть дюйма, но позвольте вам понять, что ваши активы, такие как изображения, могут быть вдвое больше. Если вы посмотрите на серию iPhone, все их устройства говорят, что ширина экрана в пикселях CSS составляет 320 пикселей, хотя мы знаем, что это неправда.
Поэтому, если вы сделали кнопку размером 22 пикселя в пространстве CSS, изображение на физическом экране будет иметь соотношение пикселей устройства 22 *. На самом деле я говорю это, это не совсем так, потому что соотношение пикселей устройства тоже никогда не бывает точным, производители телефонов устанавливают его на хорошее число, например 2,0, 3,0, а не 2,1329857289918 ....
Таким образом, пиксели CSS не зависят от устройства и позволяют нам не беспокоиться о физических размерах экранов, плотности отображения и т. Д.
Мораль этой истории такова: не беспокойтесь о физическом размере экрана в пикселях. Тебе это не нужно. 50px должен выглядеть примерно одинаково на всех мобильных устройствах, он может немного отличаться, но CSS Pixel - это наш независимый от устройства способ создания согласованных документов и пользовательского интерфейса.
Ресурсы: