Começar com Mobile-First — O Guia Correto
Porque é que desenhar para o mobile em primeiro lugar resulta melhor. Inclui exemplos práticos de CSS e estrutura HTML.
Ler ArtigoTécnicas de srcset, picture element e CSS object-fit para imagens que se adaptam perfeitamente sem desperdiçar largura de banda.
Um utilizador no telemóvel não precisa da mesma imagem que alguém num monitor de 27 polegadas. Isso é óbvio. Mas quando você começa a servir imagens de verdade — adaptadas ao tamanho do ecrã, à densidade de pixels, até à velocidade da conexão — as coisas ficam complexas rápido.
A boa notícia? Não é tão complicado quanto parece. Existem técnicas testadas e recomendadas pelo W3C que transformam imagens em assets inteligentes. Imagens que se adaptam. Imagens que poupam dados. Imagens que carregam rápido.
O atributo srcset é a forma mais direta de servir diferentes versões da mesma imagem. Você cria múltiplas versões — 480px, 800px, 1200px — e o navegador escolhe a mais apropriada.
Aqui está a estrutura básica. Simples, certo?
<img
src="imagem-800.jpg"
srcset="imagem-480.jpg 480w,
imagem-800.jpg 800w,
imagem-1200.jpg 1200w"
sizes="(max-width: 600px) 100vw,
(max-width: 1024px) 80vw,
1000px"
alt="Descrição da imagem"
>
O atributo sizes diz ao navegador que regras aplicar. Em ecrãs até 600px, use 100% da largura do viewport. Acima disso, 80%. Nunca mais de 1000px. É assim que o navegador sabe qual a versão que precisa.
Srcset funciona bem quando você tem versões da mesma imagem. Mas e quando o layout muda completamente? Quando uma imagem em paisagem no desktop fica retrato no telemóvel? É aí que entra picture.
Picture permite servir completamente diferentes imagens para diferentes contextos. Não é apenas tamanho — é composição, orientação, até formato.
<picture>
<source media="(min-width: 1024px)"
srcset="imagem-paisagem-1200.jpg">
<source media="(min-width: 600px)"
srcset="imagem-paisagem-800.jpg">
<img src="imagem-retrato-480.jpg"
alt="Descrição">
</picture>
Cada source tem uma media query. O navegador lê de cima para baixo e usa a primeira que coincide. Se nenhuma bater, usa a imagem dentro do elemento img — o fallback.
Depois de carregar a imagem correta, você ainda precisa controlá-la dentro do seu contentor. É aí que object-fit entra. Essa propriedade CSS diz ao navegador como comportar a imagem quando ela não encaixa perfeitamente.
Cover mantém a proporção e preenche o contentor — pode cortar os lados. Contain mantém tudo visível — pode deixar espaço vazio. Fill estica a imagem para preencher — pode distorcer. Scale-down usa a menor das duas dimensões.
Na maioria dos casos, cover é o que quer. Funciona bem com aspect-ratio para manter proporções consistentes em diferentes tamanhos de ecrã.
JPEG e PNG fazem o trabalho há anos. Mas formatos modernos como WEBP e AVIF oferecem compressão muito melhor. Estamos a falar de ficheiros 20-30% mais pequenos sem perder qualidade visível.
O problema? Nem todos os navegadores os suportam — ainda. Por isso use picture com type attribute para fornecer fallbacks.
<picture>
<source type="image/avif"
srcset="imagem.avif">
<source type="image/webp"
srcset="imagem.webp">
<img src="imagem.jpg" alt="Descrição">
</picture>
O navegador tenta carregar AVIF. Se não suportar, tenta WEBP. Se não suportar, usa JPG. Simples e eficaz. A maioria dos utilizadores modernos fica com os formatos mais eficientes.
Sem exceções. Alt text beneficia acessibilidade, SEO e contexto quando imagens não carregam. Seja descritivo — não escreva “imagem” nem deixe vazio.
Nunca carregue uma imagem de 4000px e depois redimensione no CSS para 400px. Crie versões dimensionadas. Ferramentas como ImageOptim, TinyPNG ou Squoosh fazem isto em segundos.
Chrome DevTools tem throttling de rede. Use 4G lenta. Veja o que os seus utilizadores veem. Se carregar lentamente, otimize mais.
Imagens abaixo da linha de dobra não precisam carregar de imediato. O atributo loading=”lazy” adia o carregamento até que fiquem visíveis. Melhora performance no carregamento inicial.
Sem aspect-ratio, o navegador não sabe quanto espaço reservar. Imagens causam layout shift quando carregam. CSS aspect-ratio reserva o espaço — evita surpresas.
Qualidade visual vs tamanho de ficheiro é um equilíbrio. Na maioria dos casos, pode comprimir muito mais do que pensa sem degradação perceptível. Teste sempre.
Comece com uma única imagem. Use srcset para 3 tamanhos. Meça o tamanho do ficheiro. Veja a diferença. Depois expanda para outras imagens. Pequenos passos. Grandes ganhos em performance e experiência do utilizador.
Explore Mais TópicosEste artigo é material educacional sobre técnicas de imagens responsivas. Os exemplos de código funcionam com os navegadores modernos — verifique a compatibilidade para o seu público específico. Tecnologias web evoluem constantemente, pelo que recomenda-se consultar especificações atuais do W3C e testes práticos no seu próprio ambiente de desenvolvimento.