cihaz piksel oranı tam olarak nedir?


170

Bu, mobil web hakkındaki her makaleden bahsedilir, ancak hiçbir yerde bu özelliğin tam olarak neyi ölçtüğüne dair bir açıklama bulamıyorum.
Herkes bu gibi sorguları neyi kontrol edebilir?

@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (-o-device-pixel-ratio: 3/2), 
only screen and (min-device-pixel-ratio: 1.5) {

    //high resolution images go here

}

Yanıtlar:


161

Kısa cevap

Cihaz piksel oranı, fiziksel pikseller ile mantıksal pikseller arasındaki orandır. Örneğin, iPhone 4 ve iPhone 4S, 2'nin cihaz piksel oranını bildirir, çünkü fiziksel doğrusal çözünürlük mantıksal doğrusal çözünürlüğün iki katıdır.

  • Fiziksel çözünürlük: 960 x 640
  • Mantıksal çözünürlük: 480 x 320

Formül:

linres_p / linres_l

Nerede:

linres_pbir fiziksel lineer çözünürlük

ve:

linres_lmantıksal doğrusal çözünürlük

Diğer cihazlar, tamsayı olmayanlar da dahil olmak üzere farklı cihaz piksel oranlarını bildirir. Örneğin, Nokia Lumia 1020 1.6667'yi, Samsumg Galaxy S4 3'ü ve Apple iPhone 6 Plus 2.46'yı (kaynak: dpilove ) bildiriyor . Ancak bu, prensipte hiçbir şeyi değiştirmez, çünkü asla belirli bir cihaz için tasarım yapmamalısınız.

Tartışma

CSS "pikseli", "bazı ekranlarda bir resim öğesi" olarak tanımlanmaz, bunun yerine kol uzunluğunda yaklaşık bir inç olan doğrusal olmayan açısal bir0.0213 ° görüntüleme açısı ölçümü olarak tanımlanır 1/96. Kaynak: CSS Mutlak Uzunlukları

Web tasarımı söz konusu olduğunda, bunun yüksek çözünürlüklü görüntü kaynakları hazırlamak ve farklı aygıt piksel oranlarında farklı görüntüler dikkatlice uygulamak gibi birçok etkisi vardır. Düşük uçlu bir cihazı çok yüksek çözünürlüklü bir görüntü indirmeye zorlamak istemezsiniz, yalnızca yerel olarak küçültmek için. Üst düzey cihazların bulanık bir kullanıcı deneyimi için düşük çözünürlüklü görüntüleri yükseltmesini de istemezsiniz.

Bitmap görüntüleri ile sıkışıp kalırsanız, birçok farklı cihaz piksel oranına uyum sağlamak için farklı cihaz grupları için farklı kaynak setleri sağlamak üzere CSS Medya Sorguları'nı kullanmalısınız . Bunu, yüzdelik değerlere benzeyen background-size: coverveya açıkça ayarlayan hoş numaralarla birleştirin background-size.

Misal

#element { background-image: url('lores.png'); }

@media only screen and (min-device-pixel-ratio: 2) {
    #element { background-image: url('hires.png'); }
}

@media only screen and (min-device-pixel-ratio: 3) {
    #element { background-image: url('superhires.png'); }
}

Bu şekilde, her aygıt türü yalnızca doğru görüntü kaynağını yükler. Ayrıca, CSS'deki pxbirimin her zaman mantıksal piksellerde çalıştığını unutmayın .

Vektör grafikleri için bir durum

Giderek daha fazla cihaz türü göründükçe, hepsine yeterli bitmap kaynakları sağlamak daha zorlaşır. CSS'de medya sorguları şu anda tek yoldur ve HTML5'te resim öğesi , farklı medya sorguları için farklı kaynaklar kullanmanıza izin verir, ancak çoğu web geliştiricisinin bir süre daha IE11'i desteklemesi gerektiğinden destek hala% 100 değildir ( kaynak: caniuse ) .

Simgeler, hat sanatı, fotoğraf olmayan tasarım öğeleri için net görüntülere ihtiyacınız varsa , tüm çözünürlüklere göre güzelce ölçeklenen SVG'yi düşünmeye başlamanız gerekir.


1
thanx, yani ben iphone 4 için bir css dosyası yapmak ve 480 x 320 sayfaya CSS ölçümleri vermek ve width=device-widthben tam ekrana gergin olacak?
ilyo

1
Kesinlikle. Ayrıca, yüksek çözünürlüklü resimler kullanıyorsanız background-imageile birleştirebilirsiniz -webkit-background-size:50%, çünkü aksi takdirde görüntü boyutu mantıksal piksel sayısını izleyecektir . w3.org/TR/2002/WD-css3-background-20020802/#background-size
Anders Tornblad

2
Yapamazsın. Öğelerinizi mantıksal pikseller background-sizekullanarak yerleştirmeniz ve ekranı en iyi şekilde kullanmak için daha yüksek çözünürlüklü görüntüler ve hile kullanmanız gerekir.
Anders Tornblad

2
Android kasası hakkında hiçbir fikrim yok. Farklı üreticilerin mantıksal ve fiziksel pikseller hakkında farklı fikirleri olabilir ... Bunu birkaç yüz farklı cihazda deneyin ... Ya da sadece cihaz tarafından bildirilen değerlerin doğru olduğunu varsayın. Belirli cihazlar için değil, medya sorguları kullanarak değer aralıkları için tasarım yapın!
Anders Tornblad

2
@atornblad ".. fiziksel ve mantıksal pikseller arasında" olması gerektiğini düşünüyorum
Ilya Buziuk

159

Cihaz Piksel Oranı == CSS Piksel Oranı

Web geliştirme dünyasında, bir cihazın ekran çözünürlüğünün CSS tarafından nasıl yorumlanacağını belirleyen cihaz piksel oranı (CSS Piksel Oranı olarak da adlandırılır).

Tarayıcının CSS'si, bir cihazın mantıksal (veya yorumlanmış) çözünürlüğünü aşağıdaki formüle göre hesaplar:

formül

Örneğin:

Apple iPhone 6s

  • Gerçek Çözünürlük: 750 x 1334
  • CSS Piksel Oranı: 2
  • Mantıksal Çözünürlük:

formül

Bir web sayfasını görüntülerken, CSS cihazın 375x667 çözünürlüklü bir ekrana sahip olduğunu düşünür ve Medya Sorguları, ekran 375x667 gibi yanıt verir . Ancak ekrandaki görüntülenen öğeler, gerçek bir 375x667 ekranın iki katı kadar keskin olacaktır, çünkü fiziksel ekranda iki kat daha fazla fiziksel piksel vardır.

Diğer bazı örnekler:

Samsung Galaxy s4

  • Gerçek Çözünürlük: 1080 x 1920
  • CSS Piksel Oranı: 3
  • Mantıksal Çözünürlük:

formül

iphone 5s

  • Gerçek Çözünürlük: 640 x 1136
  • CSS Piksel Oranı: 2
  • Mantıksal Çözünürlük:

formül

Cihaz Piksel Oranı neden var?

CSS piksel oranının oluşturulmasının nedeni, telefon ekranları daha yüksek çözünürlükler elde ettiğinden, her cihazın hala 1 CSS piksel oranına sahip olması durumunda web sayfalarının görülemeyecek kadar küçük olmasına neden olur.

Tipik bir tam ekran masaüstü monitörü, 1920x1080 çözünürlükte yaklaşık 24 inç boyutundadır. Bu monitörün yaklaşık 5 "e küçülüp küçülmediğini, ancak aynı çözünürlüğe sahip olup olmadığını hayal edin. Ekranda bir şeyleri görmek imkansız olurdu çünkü çok küçük olacaklardı. Ancak şu anda sürekli olarak 1920x1080 çözünürlüklü telefon ekranlarıyla üretiliyor.

Böylece cihaz piksel oranı telefon üreticileri tarafından icat edildi, böylece ekrandaki öğeleri görmek veya okumak için çok küçük hale getirmeden telefon ekranlarının çözünürlüğünü, keskinliğini ve kalitesini zorlamaya devam edebildiler.

İşte size mevcut cihazınızın piksel yoğunluğunu da söyleyen bir araç:

http://bjango.com/articles/min-device-pixel-ratio/


Wikipedia makalesi silindi. :-( Bu bilgi başka bir yerde mevcut mu?
Simon East

1
Böylece görüntüler yüksek dpi veya fiziksel piksellerle eşleşecek şekilde gerilir. Görüntü 300 piksel, mantıksal / css piksel 300 ama fiziksel piksel 600 ise görüntü genişliğinin ayarlanması görüntü gerilmiş anlamına gelir .. Ayrıca bazen görüntüler yüksek dpi üzerinde daha küçük gösterdiğini duydum, neden?
Muhammed Umer

2
@MuhammadUmer Örneğinizde 300 piksellik bir resim width: 100%ekranın tam genişliği olacaktır. Gerilmeyecek. Ekran bunun 300 piksellik bir ekran olduğunu düşünüyor. Görüntüler mantıksal / css çözünürlüğüne göre görüntülenir. Şimdi, örneğinizde bunun yerine 600 piksellik bir resim de sunabilirsiniz. Mantıksal 300 piksel ekranın tam genişliği olacak, ancak ekranınız doğal 600 piksel olduğundan, görüntü orijinal 300 piksel görüntünüzün iki katı kadar keskin görünecektir. Daha büyük görüntü, ancak ekranda daha fazla piksel olduğu için daha iyi görünüyor. "Retina Ekranlar" ın arkasındaki fikir budur.
Jake Wilson

@JakeWilson: Bu benim için yeni bir konu ve tam olarak anlamıyorum. Örnekte CSS piksel oranı = 2. Resim 300 fiziksel piksel genişliğinde, css'de% 100 olarak ayarladık, bu yüzden 300 CSS pikseli genişliğinde olacak. CSS px oranı 2 olduğundan, 600 fiziksel piksel genişliğinde olacak ve genişliği ekranın genişliğine tam olarak uyacak. Ancak orijinal genişliği 300 fiziksel piksel ve şimdi 600 fiziksel piksel ise nasıl gerilmez? Anladığım kadarıyla kalitesi daha düşüktür, çünkü fiziksel olarak 300'den 600 piksele uzatılmıştır. Bu konuyu biraz daha açıklayabilir misiniz, lütfen?
Peter

1
@Anuj Bilmiyorum ve donanımda / yazılımda nasıl tanımlandığı gerçekten önemli değil. Biri diğerini her iki şekilde kestikten sonra hesaplanır.
Jake Wilson

9

https://developer.mozilla.org/en/CSS/Media_queries#-moz-device-pixel-ratio

-moz-aygıt-piksel oranı
CSS pikseli başına aygıt pikseli sayısını verir.

bu neredeyse kendi kendini açıklıyor. sayı, bir "sanal" pikseli (CSS'de ayarlanan boyut) görüntülemek için "gerçek" piksellerin (ekranın fiziksel pikselleri) ne kadar kullanıldığını gösterir.


4
bir cihazın tüm sanal piksel ölçümünü kullanıp kullanmadığını ve ne olduğunu nasıl anlayabilirim? ve cihaz piksellerini sanal değil css ölçümlerinde nasıl kullanabilirim?
ilyo

ne yazık ki, google veya gerçek bir cihazda test etmek zorunda :(
netalex

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.