Risposta breve
Il rapporto pixel del dispositivo è il rapporto tra pixel fisici e pixel logici. Ad esempio, l'iPhone 4 e l'iPhone 4S riportano un rapporto pixel del dispositivo pari a 2, poiché la risoluzione fisica lineare è doppia rispetto alla risoluzione lineare logica.
- Risoluzione fisica: 960 x 640
- Risoluzione logica: 480 x 320
La formula è:
Dove:
è la risoluzione lineare fisica
e:
è la risoluzione lineare logica
Altri dispositivi riportano rapporti pixel dei dispositivi diversi, inclusi quelli non interi. Ad esempio, il Nokia Lumia 1020 riporta 1.6667, il Samsumg Galaxy S4 riporta 3 e l'Apple iPhone 6 Plus riporta 2.46 (fonte: dpilove ) . Ma questo non cambia nulla in linea di principio, poiché non dovresti mai progettare per un dispositivo specifico.
Discussione
Il "pixel" CSS non è nemmeno definito come "un elemento dell'immagine su un certo schermo", ma piuttosto come una misurazione angolare non lineare dell'angolo di visione, che è approssimativamente di un pollice alla distanza di un braccio. Fonte: CSS Absolute Lengths
Ciò ha molte implicazioni quando si tratta di web design, come la preparazione di risorse di immagini ad alta definizione e l'applicazione accurata di immagini diverse a diversi rapporti di pixel del dispositivo. Non vorrai forzare un dispositivo di fascia bassa a scaricare un'immagine ad altissima risoluzione, solo per ridimensionarla localmente. Inoltre, non si desidera che i dispositivi di fascia alta eseguano l'upscaling delle immagini a bassa risoluzione per un'esperienza utente sfocata.
Se sei bloccato con immagini bitmap, per adattarsi a molti rapporti pixel dei dispositivi diversi, dovresti usare le Media query CSS per fornire diversi set di risorse per diversi gruppi di dispositivi. Combina questo con buoni trucchi come background-size: cover
o imposta esplicitamente i background-size
valori percentuali.
Esempio
#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'); }
}
In questo modo, ogni tipo di dispositivo carica solo la risorsa immagine corretta. Inoltre, tieni presente che l' px
unità nei CSS funziona sempre su pixel logici .
Un caso per la grafica vettoriale
Man mano che appaiono sempre più tipi di dispositivi, diventa più difficile fornire a tutti loro risorse bitmap adeguate. Nel CSS, le query multimediali sono attualmente l'unico modo e, in HTML5, l' elemento immagine consente di utilizzare origini diverse per query multimediali diverse, ma il supporto non è ancora al 100% poiché la maggior parte degli sviluppatori Web deve ancora supportare IE11 per un po 'di più ( fonte: caniuse ) .
Se hai bisogno di immagini nitide per icone, disegni al tratto, elementi di design che non siano foto , devi iniziare a pensare a SVG, che si adatta perfettamente a tutte le risoluzioni.
width=device-width
lo allungherò a schermo intero?