Guia para iniciantes em imagens responsivas em HTML
Ter a mais alta qualidade de imagem possível é crucial para os sites atualmente. Nosso guia mostra uma maneira de conseguir isso.
Uma imagem responsiva é aquela que se adapta às diferentes características do dispositivo. Quando bem feitas, as imagens responsivas podem melhorar o desempenho e a experiência do usuário de um site.
Este artigo explora como você pode criar imagens responsivas em HTML usando srcset e o elemento picture.
Por que você deve usar imagens responsivas?
Quando os engenheiros de software estavam criando a web, eles não consideraram como os navegadores lidariam com imagens responsivas. Afinal, os usuários acessavam a web apenas em desktops ou laptops. Claro, isso não é verdade hoje.
De acordo com o Statista, mais de 90% da população global da Internet acessa a Internet usando seus telefones celulares. A maioria das páginas da web na internet contém imagens e essas imagens são uma das métricas usadas para medir o desempenho da web. Para melhorar o desempenho, você precisa otimizar suas imagens, tornando-as responsivas.
Como criar imagens responsivas em HTML
Você pode abordar imagens responsivas de dois ângulos: exibindo a mesma imagem com tamanhos diferentes ou exibindo imagens diferentes de acordo com as características de exibição. Você poderia usar ou
Usando srcset
O HTML padrão permite especificar apenas um arquivo de imagem. Se você deseja exibir uma imagem diferente dependendo do tamanho do dispositivo, você deve usar srcset.
Sintaxe:
<img srcset="" src="" alt="">
srcset permite fornecer arquivos de origem adicionais, e o navegador escolherá a imagem que parece ideal para aquele tamanho de imagem.
<img srcset="cute-cat.jpg 480w,
cute-cat.jpg 800w"
src="cute-cat.jpg"
alt="A cute cat">
srcset é composto de três partes: O nome do arquivo da imagem que especifica o caminho para a imagem de origem, um espaço e a largura intrínseca ou real da imagem.
Usando srcset com tamanhos
O problema de usar srcset é que você não tem controle sobre qual imagem o navegador escolherá para exibir. Combinar srcset com tamanhos resolve esse problema. tamanhos definem um conjunto de condições de mídia que indicam a imagem com o tamanho ideal.
Agora você pode reescrever a tag acima da seguinte maneira.
<img srcset="cute-cat.jpg 480w,
cute-cat.jpg 800w"
sizes="(max-width: 600px) 480px,
800px"
src="cute-cat.jpg"
alt="A cute cat">
tamanhos é composto por uma condição de mídia, neste exemplo é (largura máxima: 600px) que representa a largura da janela de visualização, o espaço e a largura do slot (480px) especificando o espaço que a imagem preencherá se a condição da mídia é verdadeira.
Aqui, o navegador irá primeiro verificar a largura do dispositivo e compará-la com a condição da mídia. Se a condição for verdadeira, ele verificará a largura do slot e carregará uma imagem do srcset com a mesma largura ou a próxima maior.
Observe que você também está incluindo src , que fornece a imagem para uso em navegadores que não suportam srcset e tamanhos.
srcset também permite veicular imagens em diferentes resoluções usando descritores x.
<img srcset="cute-cat-high.jpg,
cute-cat-high1.jpg 1.5x,
cute-cat-high2.jpg 2x"
src="cute-cat-low.jpg"
alt="A cute cat">
Neste exemplo, se o dispositivo tiver uma resolução de dois pixels por CSS ou mais, o navegador carregará a imagem cute-cat-high1.jpg.
Pixels de hardware e software
O problema com esta solução é que as imagens só respondem em termos de densidade de pixels do dispositivo. Esta é a proporção entre os pixels de hardware e os pixels de software ou CSS. Um pixel de hardware é o ponto real de luz na tela, enquanto o pixel de software ou pixel CSS é uma unidade de medida. A densidade de pixels determina a resolução do dispositivo.
Ao renderizar imagens responsivas, não considere apenas a resolução; o tamanho da tela também é importante. Caso contrário, você pode acabar carregando desnecessariamente imagens grandes ou muito pixeladas.
<img srcset="cute-cat-high1-480w.jpg 1.5x,
cute-cat-high2-640w.jpg 2x"
src="cute-cat-low.jpg"
alt="A cute cat">
Usando
é um elemento HTML que envolve vários elementos contendo diferentes arquivos de origem e um elemento . Embora torne as imagens responsivas ao exibir diferentes tamanhos da mesma imagem,
Sintaxe:
<picture>
<source media="" srcset="">
<source media="" srcset="">
<img src="" alt="">
</picture>
Considere uma situação em que você tem uma grande imagem de paisagem. A imagem é exibida e parece proporcional em um desktop, mas diminui significativamente em dispositivos móveis, de modo que os elementos da imagem ficam minúsculos. A imagem que não responde contribui para uma experiência ruim do usuário. Com
<picture>
<source media="(max-width: 639px)" srcset="cute-cat-480w.jpg">
<source media="(min-width: 640px)" srcset="cute-cat-640w.jpg">
<img src="elva-640w.jpg" alt="A cute cat">
</picture>
Como na primeira abordagem, contém um atributo de mídia que pode ser usado para fornecer a condição de mídia. Por exemplo, o navegador exibirá “cute-cat-480w.jpg” se a largura da janela de visualização for 639px ou menos. O srcset contém o caminho do arquivo de imagem que você deseja exibir e src especifica a imagem padrão.
Fallback para formato de imagem WebP
Outra coisa que
<picture>
<source type="image/webp" srcset="cute-cat.webp">
<img src="cute-cat.jpg" alt="A cute cat.">
</picture>
Por que criar imagens responsivas em HTML e não em CSS?
CSS oferece opções robustas para lidar com imagens responsivas. Então por que não usá-lo? O navegador pré-carrega as imagens antes de analisar o CSS. Portanto, antes que o JavaScript do seu site detecte a largura da janela de visualização para fazer as alterações apropriadas nas imagens, as imagens originais já foram pré-carregadas. Devido a isso, é melhor lidar com imagens responsivas usando HTML.
Busque a melhor qualidade de imagem possível
Você viu como criar imagens responsivas em HTML usando