Imagens Flexíveis
No Capítulo 06, aprendemos a adicionar imagens no HTML. No entanto, notamos que as imagens não se adaptam ao tamanho da tela como os textos.
Para resolver isso, podemos usar a tag <picture>. Com essa tag, é possível adicionar várias imagens com tamanhos diferentes, que se alternam conforme o tamanho da tela do usuário.
Quando Usar a Tag <picture>
A tag <picture> é especialmente útil nas seguintes situações:
- Poupar dados e acelerar o carregamento: Em dispositivos com telas pequenas, como smartphones, não há necessidade de carregar imagens grandes e pesadas. Usar a tag
<picture>permite carregar versões menores das imagens, economizando dados e acelerando o carregamento da página. - Adaptar imagens a diferentes resoluções: Em telas de alta resolução, como monitores Retina, é importante fornecer imagens de maior qualidade para evitar que fiquem pixeladas. A tag
<picture>permite definir diferentes versões da imagem para diferentes resoluções, garantindo uma melhor experiência visual. - Mostrar imagens específicas para diferentes orientações de tela: Em dispositivos que podem ser usados tanto na orientação vertical quanto horizontal, como tablets, a tag
<picture>permite definir imagens diferentes para cada orientação, melhorando a usabilidade e a apresentação do conteúdo.
A tag <picture> permite que você defina várias versões de uma imagem e escolha qual delas será exibida com base no tamanho da tela ou outras condições. Isso é feito usando a tag <source> dentro da tag <picture>. Vamos ver como isso funciona na prática.
Estrutura Básica
A estrutura básica da tag <picture> é a seguinte:
<picture>
<source media="(condição)" srcset="caminho/para/imagem">
<img src="caminho/para/imagem-padrão" alt="Descrição da imagem">
</picture>
Vamos entender cada parte:
<picture>: A tag que envolve todas as versões da imagem.<source>: Define uma condição e a imagem a ser exibida se essa condição for verdadeira.media="(condição)": A condição que deve ser atendida para que a imagem seja exibida. Por exemplo,media="(max-width: 750px)"significa que a imagem será exibida se a largura da tela for de até 750 pixels.srcset="caminho/para/imagem": O caminho para a imagem que será exibida se a condição for verdadeira.<img>: A imagem padrão que será exibida se nenhuma das condições definidas nas tags<source>for atendida.
Exemplo
Vamos ver um exemplo prático para entender melhor. Suponha que temos três versões de uma imagem: uma pequena, uma média e uma grande. Queremos que a versão pequena seja exibida em telas de até 750 pixels de largura, a versão média em telas de até 1050 pixels, e a versão grande em telas maiores que 1050 pixels.
<picture>
<source media="(max-width: 750px)" srcset="imagens/foto-p.png" type="image/png">
<source media="(max-width: 1050px)" srcset="imagens/foto-m.png" type="image/png">
<img src="imagens/foto-g.png" alt="Foto Teste">
</picture>
Com esse código, garantimos que a imagem exibida será a mais adequada para o tamanho da tela do usuário, melhorando a experiência de navegação e otimizando o carregamento do site.
Atributos da Tag <source> media e type
A tag <picture> funciona como uma condicional, onde as tags <source> definem a imagem a ser exibida se a condição especificada for atendida:
- Teste de largura: Verifica a largura da tela. Por exemplo,
media="(max-width: 750px)"testa se a tela tem até 750 pixels de largura. Se for verdadeiro, exibe a imagem configurada emsrcset="imagens/foto-p.png". Caso contrário, passa para o próximo teste. - Imagem a ser carregada: Indica qual imagem deve ser carregada. Use a tag
<img>para obter o caminho da imagem e copie para a tag<source>. Evite nomes de arquivos ou pastas com espaços, acentuação ou letras maiúsculas. - Tipo de imagem: Define o tipo da imagem com o atributo
type="image/png". Especificar a extensão da imagem é importante para evitar erros.
Veja abaixo o código completo com as duas tags:
<picture>
<source media="(max-width: 750px)" srcset="imagens/foto-p.png" type="image/png">
<source media="(max-width: 1050px)" srcset="imagens/foto-m.png" type="image/png">
<img src="imagens/foto-g.png" alt="Foto Teste">
</picture>
A tag <img> será exibida apenas se nenhuma das condições definidas nas tags <source> forem atendidas. Neste exemplo, a imagem será exibida se a largura da tela for superior a 1050 pixels.
Alternativamente, você pode usar o atributo min-width para definir uma condição de largura mínima. Por exemplo, ao usar min-width: 1051px, a imagem será exibida para telas com largura superior a 1050 pixels, obtendo o mesmo efeito.