Ви насправді не можете отримати реальні фізичні розміри або фактичний DPI, і навіть якби ви могли, ви не можете нічого з ними зробити.
Це досить довга і складна історія, тому пробачте мене.
Інтернет і всі браузери визначають 1px як одиницю, яка називається пікселем CSS. Піксель CSS - це не справжній піксель, а одиниця виміру, яка вважається 1/96 дюйма на основі кута огляду пристрою. Це вказано як контрольний піксель .
Еталонний піксель - це кут зору одного пікселя на пристрої з щільністю пікселів 96 dpi та відстанню від зчитувача на відстані витягнутої руки. Отже, для номінальної довжини руки 28 дюймів кут зору становить приблизно 0,0213 градуса. Таким чином, для зчитування на відстані витягнутої руки 1px відповідає приблизно 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 реальному пікселю зі швидкістю 163 dpi.
Використовуючи вікно перегляду, де ширина дорівнює "ширині пристрою", ви звільняєтесь від необхідності встановлювати ширину вікна перегляду для кожного пристрою на оптимальний розмір пікселів CSS, браузер просто робить це за вас.
З введенням подвійних пристроїв DPI виробники мобільних телефонів не хотіли, щоб мобільні сторінки здавались на 50% менше, тому вони ввели концепцію, яка називається devicePixelRatio (перша, на мою думку, в мобільному веб-комплекті), це дозволяє їм зберігати 1 CSS-піксель приблизно 1 / 96 дюйма, але дайте зрозуміти, що ваші активи, такі як зображення, можуть мати розмір удвічі більший. Якщо поглянути на серію iPhone, усі їх пристрої говорять, що ширина екрану в пікселях CSS становить 320 пікселів, хоча ми знаємо, що це неправда.
Отже, якщо ви зробили кнопку розміром 22 пікселі в просторі CSS, відображення на фізичному екрані має співвідношення пікселів пристрою 22 *. Насправді я кажу це, це не зовсім так, тому що співвідношення пікселів пристрою також ніколи не буває точним, виробники телефонів встановлюють його на приємне число, таке як 2.0, 3.0, а не 2.1329857289918 ....
Таким чином, CSS-пікселі не залежать від пристрою, і нам не доведеться турбуватися про фізичні розміри екранів, щільність відображення тощо.
Мораль історії така: не турбуйтеся про розуміння фізичного розміру пікселів екрану. Вам це не потрібно. 50px має виглядати приблизно однаково на всіх мобільних пристроях, це може дещо відрізнятися, але CSS Pixel - це незалежний від нашого пристрою спосіб створення послідовних документів та інтерфейсу користувача
Ресурси: