Réponse courte
Le rapport de pixels du périphérique est le rapport entre les pixels physiques et les pixels logiques. Par exemple, l'iPhone 4 et l'iPhone 4S rapportent un rapport de pixels de l'appareil de 2, car la résolution linéaire physique est le double de la résolution linéaire logique.
- Résolution physique: 960 x 640
- Résolution logique: 480 x 320
La formule est:
Où:
est la résolution physique linéaire
et:
est la résolution linéaire logique
D'autres appareils signalent des ratios de pixels différents, y compris des non entiers. Par exemple, le Nokia Lumia 1020 rapporte 1.6667, le Samsumg Galaxy S4 rapporte 3 et l'Apple iPhone 6 Plus rapporte 2.46 (source: dpilove ) . Mais cela ne change rien en principe, car vous ne devriez jamais concevoir pour un appareil spécifique.
Discussion
Le "pixel" CSS n'est même pas défini comme "un élément d'image sur un écran", mais plutôt comme une mesure angulaire non linéaire de l'angle de vision, qui est d'environ un pouce à bout de bras. Source: longueurs absolues CSS
Cela a de nombreuses implications en matière de conception Web, telles que la préparation de ressources d'image haute définition et l'application minutieuse de différentes images à différents ratios de pixels de l'appareil. Vous ne voudriez pas forcer un appareil bas de gamme à télécharger une image à très haute résolution, uniquement pour la réduire localement. Vous ne voulez pas non plus que les appareils haut de gamme mettent à l'échelle les images basse résolution pour une expérience utilisateur floue.
Si vous êtes coincé avec des images bitmap, pour prendre en charge de nombreux ratios de pixels de périphériques différents, vous devez utiliser CSS Media Queries pour fournir différents ensembles de ressources pour différents groupes de périphériques. Combinez cela avec de belles astuces comme background-size: cover
ou définissez explicitement les background-size
valeurs de pourcentage.
Exemple
#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'); }
}
De cette façon, chaque type de périphérique ne charge que la ressource image correcte. Gardez également à l'esprit que l' px
unité en CSS fonctionne toujours sur des pixels logiques .
Un cas pour les graphiques vectoriels
Au fur et à mesure que de plus en plus de types de périphériques apparaissent, il devient de plus en plus difficile de leur fournir à tous des ressources bitmap adéquates. En CSS, les requêtes multimédias sont actuellement le seul moyen, et en HTML5, l' élément image vous permet d'utiliser différentes sources pour différentes requêtes multimédias, mais le support n'est toujours pas à 100% car la plupart des développeurs Web doivent encore prendre en charge IE11 pendant un certain temps ( source: caniuse ) .
Si vous avez besoin d'images nettes pour des icônes, des dessins au trait, des éléments de conception qui ne sont pas des photos , vous devez commencer à penser au SVG, qui s'adapte parfaitement à toutes les résolutions.
width=device-width
je l'aurai étiré en plein écran?