Gerçek fiziksel boyutları veya gerçek DPI'yı gerçekten elde edemezsiniz ve yapabilseniz bile onlarla hiçbir şey yapamazsınız.
Bu oldukça uzun ve karmaşık bir hikaye, bu yüzden beni affet.
Web ve tüm tarayıcılar 1px'i CSS pikseli adı verilen bir birim olarak tanımlar. Bir CSS pikseli gerçek bir piksel değil, cihazın görüş açısına bağlı olarak bir inçin 1 / 96'sı olarak kabul edilen bir birimdir. Bu bir referans pikseli olarak belirtilir .
Referans piksel, piksel yoğunluğu 96 dpi olan ve okuyucudan bir kol uzunluğu kadar olan bir cihazdaki bir pikselin görsel açısıdır. 28 inçlik nominal bir kol uzunluğu için, görsel açı bu nedenle yaklaşık 0.0213 derecedir. Kol uzunluğunda okumak için, 1 piksel, yaklaşık 0,26 mm'ye (1/96 inç) karşılık gelir.
0.26 mm'lik bir alanda çok fazla gerçek cihaz pikselimiz olabilir.
Tarayıcı bunu temel olarak eski nedenlerle yapıyor - web doğduğunda çoğu monitör 96 dpi idi - ancak aynı zamanda tutarlılık için, "eski günlerde" 800x600'de 15 inçlik bir ekranda 22px'lik bir düğme, 22px düğmesinin iki katı büyüklüğünde olurdu. 1600x1200 çözünürlükte 15 inçlik bir monitör. Bu durumda, ekranın DPI değeri aslında 2x'tir (yatay olarak ancak aynı fiziksel alanda iki kat çözünürlük). Bu, web ve uygulamalar için kötü bir durumdur, bu nedenle çoğu işletim sistemi, piksel değerlerini cihazdan bağımsız birimlere soyutlamanın birçok yolunu tasarladı (Android'de DIPS, iOS'ta PT ve web'de CSS Piksel ).
İPhone Safari tarayıcısı, bir görüntü alanı konseptini tanıtan ilk (bildiğim kadarıyla) oldu. Bu, tam masaüstü tarzı uygulamaların küçük bir ekranda görüntülenmesini sağlamak için oluşturulmuştur. Görüntü alanı 960 piksel genişliğinde olacak şekilde tanımlandı. Bu, esasen sayfayı 3 kat uzaklaştırdı (iphone orijinal olarak 320 piksel idi), bu nedenle 1 CSS pikseli, fiziksel bir pikselin 1 / 3'üdür. Bir görüntü alanı tanımladığınızda, bu cihazı 1 CSS pikseli = 163dpi'de 1 gerçek pikselle eşleştirebilirsiniz.
Genişliğin "cihaz genişliği" olduğu bir görüntü alanını kullanmak, sizi görüntü alanının genişliğini cihaz başına en uygun CSS piksel boyutuna ayarlamak zorunda kalmaktan kurtarır, tarayıcı bunu sizin için yapar.
Çift DPI cihazlarının piyasaya sürülmesiyle, cep telefonu üreticileri, mobil sayfaların% 50 daha küçük görünmesini istemediler, bu nedenle devicePixelRatio (ilk inandığım mobil webkit'te) adlı bir konsept geliştirdiler, bu da 1 CSS pikselinin kabaca 1 / Bir inçin 96'da biri, ancak görüntüler gibi varlıklarınızın iki kat daha büyük olması gerektiğini anlamanıza izin verin. İPhone serisine bakarsanız, tüm cihazlarının CSS piksellerinde ekranın genişliğinin 320px olduğunu söylüyor, bunun doğru olmadığını bilsek bile.
Bu nedenle, CSS alanında 22px olacak bir düğme yaptıysanız, fiziksel ekrandaki gösterim 22 * cihaz piksel oranıdır. Aslında bunu söylüyorum, tam olarak bu değil çünkü cihaz piksel oranı da asla kesin değil, telefon üreticileri bunu 2.1329857289918 yerine 2.0, 3.0 gibi güzel bir sayıya ayarladı ...
Özetle, CSS pikselleri cihazdan bağımsızdır ve ekranların fiziksel boyutları ve görüntü yoğunlukları vb. Hakkında endişelenmemize gerek kalmaz.
Hikayenin ahlakı şudur: Ekranın fiziksel piksel boyutunu anlama konusunda endişelenmeyin. İhtiyacın yok. 50px, tüm mobil cihazlarda aşağı yukarı aynı görünmelidir, biraz değişebilir, ancak CSS Piksel, tutarlı belgeler ve kullanıcı arayüzleri oluşturmak için bizim cihazımızdan bağımsız bir yoldur
Kaynaklar: