Anda tidak dapat benar-benar mendapatkan dimensi fisik yang sebenarnya atau DPI yang sebenarnya dan bahkan jika Anda bisa, Anda tidak dapat melakukan apa pun dengannya.
Ini adalah cerita yang cukup panjang dan rumit, jadi maafkan saya.
Web dan semua browser mendefinisikan 1px sebagai unit yang disebut piksel CSS. Piksel CSS bukanlah piksel nyata, melainkan unit yang dianggap 1/96 inci berdasarkan sudut pandang perangkat. Ini ditentukan sebagai piksel referensi .
Pixel referensi adalah sudut visual satu piksel pada perangkat dengan kepadatan piksel 96dpi dan jarak dari pembaca sejauh lengan. Untuk panjang lengan nominal 28 inci, sudut visualnya sekitar 0,0213 derajat. Untuk membaca pada panjang lengan, 1px sama dengan sekitar 0,26 mm (1/96 inci).
Dalam ruang 0,26mm kami mungkin memiliki sangat banyak piksel perangkat nyata.
Browser melakukan ini terutama karena alasan lama - sebagian besar monitor berukuran 96dpi saat web lahir - tetapi juga untuk konsistensi, di "masa lalu" tombol 22px pada layar 15 inci pada 800x600 akan menjadi dua kali ukuran tombol 22px pada monitor 15 inci dengan ukuran 1600x1200. Dalam hal ini DPI layar sebenarnya 2x (resolusi dua kali lipat secara horizontal tetapi dalam ruang fisik yang sama). Ini adalah situasi yang buruk untuk web dan aplikasi, sehingga sebagian besar sistem operasi menemukan banyak cara untuk mengabstraksi nilai piksel ke unit independen perangkat (DIPS di Android, PT di iOS dan CSS Pixel di web ).
Browser iPhone Safari adalah yang pertama (sepengetahuan saya) yang memperkenalkan konsep viewport. Ini dibuat untuk mengaktifkan aplikasi gaya desktop penuh untuk dirender di layar kecil. Area pandang ditetapkan dengan lebar 960 piksel. Ini pada dasarnya memperbesar halaman 3x (iphone awalnya 320px) jadi 1 piksel CSS adalah 1/3 dari piksel fisik. Saat Anda menentukan area pandang meskipun Anda bisa membuat perangkat ini cocok dengan 1 piksel CSS = 1 piksel nyata pada 163dpi.
Dengan menggunakan area pandang yang lebarnya "lebar perangkat" membebaskan Anda dari keharusan menyetel lebar area pandang per perangkat menjadi ukuran piksel CSS yang optimal, browser hanya melakukannya untuk Anda.
Dengan diperkenalkannya perangkat DPI ganda, produsen ponsel tidak ingin halaman seluler tampil 50% lebih kecil sehingga mereka memperkenalkan konsep yang disebut devicePixelRatio (pertama di webkit seluler saya yakin), ini memungkinkan mereka mempertahankan 1 piksel CSS menjadi kira-kira 1 / 96 inci tetapi biarkan Anda memahami bahwa aset Anda seperti gambar mungkin perlu berukuran dua kali lipat. Jika Anda melihat seri iPhone, semua perangkat mereka mengatakan lebar layar dalam piksel CSS adalah 320px meskipun kami tahu ini tidak benar.
Oleh karena itu, jika Anda membuat tombol menjadi 22px dalam ruang CSS, representasi pada layar fisik adalah rasio piksel perangkat 22 *. Sebenarnya saya mengatakan ini, bukan ini karena rasio piksel perangkat juga tidak pernah pasti, pabrikan ponsel menetapkannya ke angka yang bagus seperti 2.0, 3.0 daripada 2.1329857289918 ....
Singkatnya, piksel CSS tidak bergantung pada perangkat dan tidak perlu khawatir tentang ukuran fisik layar dan kepadatan tampilan, dll.
Moral dari cerita ini adalah: Jangan khawatir tentang memahami ukuran piksel fisik layar. Anda tidak membutuhkannya. 50px seharusnya terlihat kurang lebih sama di semua perangkat seluler. Ini mungkin sedikit berbeda, tetapi CSS Pixel adalah cara independen perangkat kami untuk membuat dokumen dan UI yang konsisten.
Sumber: