apa sebenarnya rasio piksel perangkat?

170

ini disebutkan setiap artikel tentang web seluler, tetapi tidak ada tempat saya dapat menemukan penjelasan tentang apa sebenarnya ukuran atribut ini.
Adakah yang bisa menjelaskan hal-hal seperti ini?

@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

}
ilyo
sumber

Jawaban:

161

Jawaban singkat

Rasio piksel perangkat adalah rasio antara piksel fisik dan piksel logis. Misalnya, iPhone 4 dan iPhone 4S melaporkan rasio piksel perangkat 2, karena resolusi linear fisik dua kali lipat resolusi linear logis.

  • Resolusi fisik: 960 x 640
  • Resolusi logis: 480 x 320

Rumusnya adalah:

linres_p / linres_l

Dimana:

linres_padalah resolusi linear fisik

dan:

linres_ladalah resolusi linear logis

Perangkat lain melaporkan rasio piksel perangkat yang berbeda, termasuk yang non-integer. Misalnya, Nokia Lumia 1020 melaporkan 1,6667, Samsumg Galaxy S4 melaporkan 3, dan Apple iPhone 6 Plus melaporkan 2,46 (sumber: dpilove ) . Tapi ini pada dasarnya tidak mengubah apa pun, karena Anda tidak boleh mendesain untuk satu perangkat tertentu.

Diskusi

CSS "pixel" bahkan tidak didefinisikan sebagai "salah satu elemen gambar pada beberapa layar", melainkan sebagai pengukuran sudut non-linear dari 0,0213 °sudut pandang, yang kira-kira 1/96satu inci di lengan panjang. Sumber: Panjang Absolut CSS

Ini memiliki banyak implikasi ketika datang ke desain web, seperti menyiapkan sumber daya gambar definisi tinggi dan hati-hati menerapkan gambar yang berbeda pada rasio piksel perangkat yang berbeda. Anda tidak ingin memaksa perangkat kelas bawah untuk mengunduh gambar beresolusi sangat tinggi, hanya untuk menurunkannya secara lokal. Anda juga tidak ingin perangkat kelas atas untuk meningkatkan gambar beresolusi rendah untuk pengalaman pengguna yang buram.

Jika Anda terjebak dengan gambar bitmap, untuk mengakomodasi banyak rasio piksel perangkat yang berbeda, Anda harus menggunakan CSS Media Queries untuk menyediakan rangkaian sumber daya yang berbeda untuk berbagai kelompok perangkat. Gabungkan ini dengan trik yang bagus seperti background-size: coveratau secara eksplisit mengatur nilai background-sizepersentase ke.

Contoh

#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'); }
}

Dengan cara ini, setiap jenis perangkat hanya memuat sumber daya gambar yang benar. Perlu diingat juga bahwa pxunit dalam CSS selalu beroperasi pada piksel logis .

Wadah untuk grafik vektor

Semakin banyak jenis perangkat yang muncul, semakin sulit untuk menyediakan semuanya dengan sumber daya bitmap yang memadai. Di CSS, permintaan media saat ini adalah satu-satunya cara, dan di HTML5, elemen gambar memungkinkan Anda menggunakan sumber yang berbeda untuk permintaan media yang berbeda, tetapi dukungannya masih belum 100% karena sebagian besar pengembang web masih harus mendukung IE11 untuk sementara waktu ( sumber: caniuse ) .

Jika Anda membutuhkan gambar yang tajam untuk ikon, garis-seni, elemen desain yang bukan foto , Anda harus mulai memikirkan SVG, yang diskalakan dengan indah ke semua resolusi.

Anders Tornblad
sumber
1
thanx, jadi jika saya membuat file css untuk iphone 4 dan memberikan ukuran halaman CSS 480 x 320 dan width=device-widthsaya akan membuatnya membentang ke layar penuh?
ilyo
1
Persis. Dan jika Anda menggunakan gambar resolusi tinggi background-image, Anda dapat menggabungkannya dengan -webkit-background-size:50%, karena jika tidak, ukuran gambar akan mengikuti jumlah piksel logis . w3.org/TR/2002/WD-css3-background-20020802/#background-size
Anders Tornblad
2
Kamu tidak bisa Anda perlu mengatur elemen Anda menggunakan piksel logis, dan menggunakan gambar dengan resolusi lebih tinggi dan background-sizetrik untuk menggunakan tampilan secara optimal.
Anders Tornblad
2
Saya tidak tahu tentang kasing android. Bisa jadi pabrikan yang berbeda memiliki gagasan berbeda tentang piksel logis dan fisik ... Cobalah sendiri di beberapa ratus perangkat yang berbeda ... Atau anggap saja nilai yang dilaporkan oleh perangkat tersebut benar. Jangan mendesain untuk perangkat tertentu, tetapi desain untuk rentang nilai menggunakan kueri media!
Anders Tornblad
2
@atornblad Saya pikir itu harus ".. antara piksel fisik dan logis "
Ilya Buziuk
159

Rasio Pixel Perangkat == Rasio Pixel CSS

Dalam dunia pengembangan web, rasio piksel perangkat (juga disebut CSS Pixel Ratio) adalah yang menentukan bagaimana resolusi layar perangkat ditafsirkan oleh CSS.

CSS peramban menghitung resolusi logis (atau ditafsirkan) perangkat dengan rumus:

rumus

Sebagai contoh:

Apple iPhone 6s

  • Resolusi Sebenarnya: 750 x 1334
  • Rasio Pixel CSS: 2
  • Resolusi logis:

rumus

Saat melihat halaman web, CSS akan berpikir perangkat memiliki layar resolusi 375x667 dan Media Queries akan merespons seolah-olah layarnya adalah 375x667 . Tetapi elemen yang diberikan pada layar akan dua kali lebih tajam dari layar 375x667 yang sebenarnya karena ada dua kali lebih banyak piksel fisik di layar fisik.

Beberapa contoh lain:

Samsung Galaxy S4

  • Resolusi Sebenarnya: 1080 x 1920
  • Rasio Pixel CSS: 3
  • Resolusi logis:

rumus

iPhone 5s

  • Resolusi Sebenarnya: 640 x 1136
  • Rasio Pixel CSS: 2
  • Resolusi logis:

rumus

Mengapa Rasio Piksel Perangkat ada?

Alasan rasio piksel CSS dibuat karena layar ponsel mendapatkan resolusi yang lebih tinggi, jika setiap perangkat masih memiliki rasio piksel CSS 1, maka halaman web akan terlalu kecil untuk dilihat.

Monitor desktop layar penuh tipikal adalah sekitar 24 "pada resolusi 1920x1080. Bayangkan jika monitor itu menyusut menjadi sekitar 5" tetapi memiliki resolusi yang sama. Melihat hal-hal di layar tidak mungkin karena ukurannya sangat kecil. Tapi manufaktur keluar dengan layar ponsel beresolusi 1920x1080 secara konsisten sekarang.

Jadi, rasio piksel perangkat ditemukan oleh pembuat ponsel sehingga mereka dapat terus mendorong resolusi, ketajaman, dan kualitas layar ponsel, tanpa membuat elemen pada layar terlalu kecil untuk dilihat atau dibaca.

Berikut adalah alat yang juga memberi tahu Anda kerapatan piksel perangkat Anda saat ini:

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

Jake Wilson
sumber
Artikel Wikipedia telah dihapus. :-( Apakah informasi ini tersedia di tempat lain?
Simon East
1
Jadi, gambar dikencangkan agar sesuai dengan dpi tinggi atau piksel fisik. Katakanlah gambar adalah 300px, logis / css px adalah 300 juga tetapi px fisik adalah 600 maka pengaturan lebar gambar akan berarti gambar menjadi melebar .. saya juga mendengar bahwa kadang-kadang gambar menunjukkan lebih kecil pada dpi tinggi, mengapa?
Muhammad Umer
2
@MuhammadUmer Dalam contoh Anda gambar 300px dengan width: 100%akan menjadi lebar penuh layar. Itu tidak akan diregangkan. Layar "berpikir" itu adalah tampilan 300px. Gambar ditampilkan sesuai dengan resolusi logis / css. Sekarang, dalam contoh Anda, Anda juga bisa menyajikan gambar 600px. Ini akan menjadi lebar penuh dari tampilan 300px logis, tetapi karena tampilan Anda asli 600px gambar akan terlihat dua kali lebih tajam dari gambar 300px asli Anda. Gambar lebih besar, tetapi terlihat lebih baik karena layar memiliki semua piksel ekstra. Ini adalah ide di balik "Retina Displays".
Jake Wilson
@JakeWilson: Ini adalah topik baru bagi saya dan saya tidak sepenuhnya memahaminya. Dalam contoh, rasio piksel CSS = 2. Gambar adalah 300 piksel fisik lebar, di css kita atur ke 100%, sehingga akan menjadi 300 piksel CSS. Karena rasio CSS px adalah 2, maka akan menjadi 600 piksel fisik lebar dan lebarnya akan sama persis dengan lebar tampilan. Tapi kenapa tidak diregangkan jika lebar aslinya adalah 300 px fisik dan sekarang 600 px fisik? Pemahaman saya adalah kualitasnya lebih rendah karena secara fisik membentang dari 300 ke 600px. Bisakah Anda menjelaskan lebih jauh tentang ini?
Peter
1
@ Anuj Saya tidak tahu dan tidak masalah bagaimana itu didefinisikan dalam perangkat keras / lunak. Satu dihitung dari cara lain Anda memotongnya.
Jake Wilson
9

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

-moz-device-pixel-ratio
Memberikan jumlah piksel perangkat per piksel CSS.

ini hampir menjelaskan sendiri. angka tersebut menggambarkan rasio berapa banyak piksel "nyata" (piksel fisik layar) digunakan untuk menampilkan satu piksel "virtual" (ukuran ditetapkan dalam CSS).

oezi
sumber
4
bagaimana saya tahu jika suatu perangkat menggunakan pengukuran piksel virtual dan apa itu? dan bagaimana cara menggunakan piksel perangkat dalam pengukuran css dan bukan virtual?
ilyo
Sayangnya, Anda harus google atau menguji pada perangkat nyata :(
netalex
9

Artikel Boris Smus Gambar DPI Tinggi untuk Piksel Variabel Kepadatan memiliki definisi rasio piksel perangkat yang lebih akurat: jumlah piksel perangkat per piksel CSS adalah perkiraan yang baik, tetapi tidak keseluruhan cerita.

Perhatikan bahwa Anda dapat menggunakan DPR dengan perangkat window.devicePixelRatio.

Sam Dutton
sumber