Krótka odpowiedź
Współczynnik pikseli urządzenia to stosunek pikseli fizycznych do pikseli logicznych. Na przykład iPhone 4 i iPhone 4S zgłaszają współczynnik pikseli urządzenia wynoszący 2, ponieważ fizyczna rozdzielczość liniowa jest dwukrotnie większa niż logiczna rozdzielczość liniowa.
- Rozdzielczość fizyczna: 960 x 640
- Rozdzielczość logiczna: 480 x 320
Formuła to:

Gdzie:
to fizyczna rozdzielczość liniowa
i:
to logiczna rozdzielczość liniowa
Inne urządzenia zgłaszają różne współczynniki pikseli urządzenia, w tym niecałkowite. Na przykład Nokia Lumia 1020 zgłasza 1,6667, Samsumg Galaxy S4 3, a Apple iPhone 6 Plus 2,46 (źródło: dpilove ) . Ale to w zasadzie niczego nie zmienia, ponieważ nigdy nie powinieneś projektować dla żadnego konkretnego urządzenia.
Dyskusja
CSS „piksel” nie jest jeszcze zdefiniowany jako „jednego elementu obrazu na jakimś ekranie”, ale raczej jako nieliniowy pomiaru kątowego o
kącie widzenia, który jest około
cala na warunkach rynkowych. Źródło: CSS Absolute Lengths
Ma to wiele konsekwencji, jeśli chodzi o projektowanie stron internetowych, na przykład przygotowywanie zasobów obrazu o wysokiej rozdzielczości i ostrożne stosowanie różnych obrazów przy różnych proporcjach urządzenia. Nie chciałbyś zmuszać urządzenia z niższej półki do pobierania obrazu o bardzo wysokiej rozdzielczości, tylko po to, aby zmniejszyć go lokalnie. Nie chcesz też, aby zaawansowane urządzenia skalowały obrazy o niskiej rozdzielczości w celu niewyraźnego wrażenia użytkownika.
Jeśli utkniesz z obrazami bitmapowymi, aby dostosować się do wielu różnych współczynników pikseli urządzenia, powinieneś użyć CSS Media Queries, aby zapewnić różne zestawy zasobów dla różnych grup urządzeń. Połącz to z fajnymi sztuczkami, takimi jak background-size: coverlub jawnie ustaw na background-sizewartości procentowe.
Przykład
#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'); }
}
W ten sposób każdy typ urządzenia ładuje tylko poprawny zasób obrazu. Pamiętaj również, że pxjednostka w CSS zawsze działa na logicznych pikselach .
Skrzynia na grafikę wektorową
W miarę pojawiania się coraz większej liczby typów urządzeń coraz trudniej jest zapewnić im wszystkim odpowiednie zasoby bitmapowe. W CSS zapytania o media są obecnie jedynym sposobem, aw HTML5 element picture pozwala używać różnych źródeł dla różnych zapytań o media, ale wsparcie nadal nie jest w 100%, ponieważ większość twórców stron internetowych nadal musi obsługiwać IE11 przez jakiś czas ( źródło: caniuse ) .
Jeśli potrzebujesz wyraźnych obrazów ikon, grafiki liniowej, elementów projektu, które nie są zdjęciami , musisz zacząć myśleć o SVG, które pięknie skaluje się do wszystkich rozdzielczości.
width=device-widthrozciągnę ją do pełnego ekranu?