Naprawdę nie możesz uzyskać rzeczywistych wymiarów fizycznych ani rzeczywistego DPI, a nawet gdybyś mógł, nie możesz z nimi nic zrobić.
To dość długa i złożona historia, więc wybacz mi.
Internet i wszystkie przeglądarki definiują 1 piksel jako jednostkę zwaną pikselem CSS. Piksel CSS nie jest prawdziwym pikselem, a raczej jednostką, która jest uważana za 1/96 cala na podstawie kąta widzenia urządzenia. Jest to określane jako piksel odniesienia .
Piksel odniesienia to kąt widzenia jednego piksela na urządzeniu o gęstości pikseli 96 dpi i odległości od czytnika na wyciągnięcie ręki. W przypadku nominalnej długości ramienia 28 cali kąt widzenia wynosi zatem około 0,0213 stopnia. W przypadku odczytu z odległości 1 piksela odpowiada zatem około 0,26 mm (1/96 cala).
W 0,26 mm przestrzeni możemy mieć bardzo wiele rzeczywistych pikseli urządzenia.
Przeglądarka robi to głównie z powodów przestarzałych - większość monitorów miała 96 dpi w momencie narodzin sieci - ale także dla spójności, w „dawnych czasach” przycisk 22px na 15-calowym ekranie o rozdzielczości 800x600 był dwukrotnie większy niż przycisk 22px na 15-calowy monitor o rozdzielczości 1600x1200. W tym przypadku DPI ekranu wynosi w rzeczywistości 2x (dwukrotnie większa rozdzielczość w poziomie, ale w tej samej przestrzeni fizycznej). Jest to zła sytuacja dla sieci i aplikacji, dlatego większość systemów operacyjnych opracowała wiele sposobów wyodrębniania wartości pikseli w jednostkach niezależnych od urządzenia (DIPS na Androidzie, PT na iOS i CSS Pixel w sieci ).
Przeglądarka iPhone Safari jako pierwsza (o ile mi wiadomo) wprowadziła koncepcję widoku. Zostało to stworzone, aby umożliwić renderowanie aplikacji w pełnym stylu na małym ekranie. Widoczny obszar miał szerokość 960 pikseli. To zasadniczo pomniejszyło stronę 3x (iPhone miał pierwotnie 320px), więc 1 piksel CSS to 1/3 fizycznego piksela. Kiedy zdefiniowałeś obszar roboczy, możesz jednak uzyskać dopasowanie tego urządzenia do 1 piksela CSS = 1 prawdziwy piksel przy 163 dpi.
Używając okna roboczego, w którym szerokość jest równa „szerokość urządzenia”, nie musisz ustawiać szerokości obszaru roboczego dla każdego urządzenia na optymalny rozmiar w pikselach CSS, przeglądarka zrobi to za Ciebie.
Wraz z wprowadzeniem urządzeń z podwójnym DPI, producenci telefonów komórkowych nie chcieli, aby strony mobilne wyglądały na 50% mniejsze, więc wprowadzili koncepcję o nazwie devicePixelRatio (pierwsza w mobilnym zestawie internetowym, jak sądzę), która pozwala im utrzymać 1 piksel CSS na poziomie około 1 / 96 części cala, ale pozwól sobie zrozumieć, że zasoby, takie jak obrazy, mogą wymagać dwukrotnego rozmiaru. Jeśli spojrzysz na serię iPhone'ów, wszystkie ich urządzenia powiedzą, że szerokość ekranu w pikselach CSS wynosi 320 pikseli, mimo że wiemy, że to nieprawda.
Dlatego jeśli utworzyłeś przycisk, który ma 22 piksele w przestrzeni CSS, reprezentacja na ekranie fizycznym ma stosunek pikseli urządzenia 22 *. Właściwie to mówię, to nie jest dokładnie to, ponieważ współczynnik pikseli urządzenia też nigdy nie jest dokładny, producenci telefonów ustawili go na ładną liczbę, taką jak 2,0, 3,0 zamiast 2,1329857289918 ....
Podsumowując, piksele CSS są niezależne od urządzenia i nie musimy martwić się o fizyczne rozmiary ekranów, gęstość wyświetlania itp.
Morał tej historii jest następujący: nie martw się o zrozumienie rozmiaru fizycznego piksela ekranu. Nie potrzebujesz tego. 50 pikseli powinno wyglądać mniej więcej tak samo na wszystkich urządzeniach mobilnych, może się nieco różnić, ale CSS Pixel to nasz niezależny od urządzenia sposób tworzenia spójnych dokumentów i interfejsów użytkownika
Zasoby: