Resposta curta
A proporção de pixels do dispositivo é a proporção entre pixels físicos e pixels lógicos. Por exemplo, o iPhone 4 e o iPhone 4S relatam uma taxa de pixels do dispositivo de 2, porque a resolução linear física é o dobro da resolução linear lógica.
- Resolução física: 960 x 640
- Resolução lógica: 480 x 320
A fórmula é:
Onde:
é a resolução física linear
e:
é a resolução linear lógica
Outros dispositivos relatam diferentes proporções de pixel de dispositivo, incluindo não-inteiros. Por exemplo, o Nokia Lumia 1020 reporta 1.6667, o Samsumg Galaxy S4 reporta 3 e o Apple iPhone 6 Plus reporta 2.46 (fonte: dpilove ) . Mas isso não muda nada em princípio, pois você nunca deve projetar para nenhum dispositivo específico.
Discussão
O "pixel" do CSS nem mesmo é definido como "um elemento de imagem em alguma tela", mas como uma medida angular não linear do ângulo de visão, que é aproximadamente uma polegada no comprimento do braço. Fonte: Comprimentos absolutos do CSS
Isso tem muitas implicações quando se trata de web design, como preparar recursos de imagem de alta definição e aplicar cuidadosamente imagens diferentes em diferentes proporções de pixels de dispositivos. Você não gostaria de forçar um dispositivo low-end a baixar uma imagem de resolução muito alta, apenas para reduzi-la localmente. Você também não deseja que os dispositivos de ponta aprimorem as imagens de baixa resolução para uma experiência borrada do usuário.
Se você estiver preso com imagens de bitmap, para acomodar diversas proporções de pixels de dispositivos diferentes, use as Consultas de mídia CSS para fornecer conjuntos diferentes de recursos para diferentes grupos de dispositivos. Combine isso com bons truques background-size: cover
ou defina explicitamente os background-size
valores de porcentagem.
Exemplo
#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'); }
}
Dessa forma, cada tipo de dispositivo carrega apenas o recurso de imagem correto. Lembre-se também de que a px
unidade em CSS sempre opera em pixels lógicos .
Um caso para gráficos vetoriais
À medida que mais e mais tipos de dispositivos aparecem, fica mais difícil fornecer a todos eles recursos de bitmap adequados. Atualmente, em CSS, as consultas de mídia são a única maneira e, em HTML5, o elemento picture permite usar fontes diferentes para consultas de mídia diferentes, mas o suporte ainda não é 100%, já que a maioria dos desenvolvedores da Web ainda precisa oferecer suporte ao IE11 por mais algum tempo ( fonte: caniuse ) .
Se você precisar de imagens nítidas para ícones, arte de linha e elementos de design que não sejam fotos , comece a pensar no SVG, que se adapta perfeitamente a todas as resoluções.
width=device-width
estendê-lo para tela cheia?