Trilha de aprendizado · Nível 4 · Tutorial 3

Oferecer resoluções de imagem com srcset e sizes

Declarar versões de uma mesma imagem para que o navegador selecione um recurso adequado à densidade da tela e à largura prevista de exibição.

  • Nível: Intermediário
  • Duração: 25 min
  • 7 passos
Oferecer resoluções de imagem com srcset e sizes

O que você vai percorrer

  1. Relacionar resolução, tamanho de exibição e densidade Diferencie pixels do arquivo, pixels CSS e densidade da tela para calcular uma referência de resolução. 3 min
  2. Oferecer candidatos por densidade com srcset Monte uma lista de candidatos com 1x e 2x para uma imagem com largura de exibição conhecida, mantendo src como fonte de reserva. 4 min
  3. Declarar a largura real dos arquivos com w Monte listas de candidatos com descritores w coerentes com as dimensões reais dos arquivos, sem misturá-los com descritores x. 4 min
  4. Informar a largura prevista com sizes Use um valor em px ou vw para informar a largura prevista da imagem, sem confundir essa informação com o controle do tamanho visual. 3 min
  5. Adaptar sizes à largura da viewport Combine condições de largura, organize sua ordem e acrescente um valor padrão para informar a largura prevista da imagem. 4 min
  6. Entender a escolha feita pelo navegador Calcule a densidade efetiva, reconheça um sizes incoerente e explique por que a seleção de um arquivo não é garantida. 3 min
  7. Aplicar e revisar srcset e sizes Complete dois elementos img e revise a coerência entre arquivos, descritores e larguras previstas, sem confundir seleção do recurso com tamanho visual. 4 min

O que você vai aprender

  • Relacionar largura em pixels do arquivo, largura de exibição e densidade da tela.
  • Montar um srcset com descritores de densidade para imagens com largura de exibição conhecida.
  • Montar um srcset com descritores de largura correspondentes às dimensões reais dos arquivos.
  • Escrever sizes com condições simples de largura da viewport e um valor final padrão.
  • Distinguir a seleção do arquivo de imagem do controle de seu tamanho visual.

Antes de começar

  • Inserir imagens com dimensões e texto alternativo
  • Configurar idioma, codificação, título e viewport

Passo 1 de 7

Relacionar resolução, tamanho de exibição e densidade

Diferencie pixels do arquivo, pixels CSS e densidade da tela para calcular uma referência de resolução.

A mesma foto, medidas diferentes

Pixels do arquivo e pixels CSS

Uma foto com 600 × 400 pixels pode aparecer na página com apenas 300 pixels CSS de largura.

Os 600 pixels indicam a largura do arquivo. Os 300 pixels CSS medem a largura ocupada na página. O pixel CSS é uma unidade de referência para a exibição; você não precisa escrever CSS para trabalhar com essa medida.

E a densidade da tela?

A densidade relaciona pixels físicos da tela e pixels CSS.

  • Densidade 1: um pixel físico para cada pixel CSS em cada direção.
  • Densidade 2: dois pixels físicos para cada pixel CSS em cada direção.

Assim, a mesma largura em pixels CSS pode corresponder a quantidades diferentes de pixels físicos.

Exemplo

O que são variantes de resolução?

Imagine dois arquivos da mesma foto: um com 300 × 200 pixels e outro com 600 × 400 pixels. Eles preservam o conteúdo, o enquadramento e a proporção; mudam apenas as dimensões em pixels.

Esses arquivos, preparados previamente, são variantes de resolução.

Identifique cada medida

Arquivo, exibição ou densidade?

Uma foto tem 800 pixels de largura no arquivo e ocupa 400 pixels CSS de largura na página, em uma tela de densidade 2. Relacione cada informação ao seu significado.

Toque em um item e depois no par correspondente.

Calcule uma referência de resolução

Largura de exibição × densidade

Multiplique a largura de exibição em pixels CSS pela densidade da tela. O resultado é uma referência para a largura do arquivo em pixels.

Essa conta ajuda a planejar as variantes, mas não garante qual arquivo o navegador escolherá.

Exemplo

Mesma largura visual, duas referências

A página está preparada para exibir uma foto com 300 pixels CSS de largura.

  • Tela de densidade 1: 300 × 1 = 300 pixels de largura no arquivo.
  • Tela de densidade 2: 300 × 2 = 600 pixels de largura no arquivo.

Nos dois casos, a imagem continua ocupando 300 pixels CSS de largura na página.

Dica

Por que oferecer mais de uma versão?

Versões com mais pixels podem preservar detalhes em telas mais densas, mas geralmente transferem mais dados. Oferecer variantes permite equilibrar definição visual e quantidade de dados baixados.

A marcação HTML declara os arquivos disponíveis; ela não cria essas versões.

Planeje duas resoluções

Uma foto com largura de exibição conhecida

Uma foto será exibida com 240 pixels CSS de largura em duas telas de densidades diferentes. Calcule a largura de referência do arquivo para cada tela. Digite apenas os números.

Tela de densidade 1

Para a exibição com 240 pixels CSS de largura, a largura de referência do arquivo é ___ pixels.

Tela de densidade 2

Mantendo a exibição com 240 pixels CSS de largura, a largura de referência do arquivo agora é ___ pixels.

Passo 2 de 7

Oferecer candidatos por densidade com srcset

Monte uma lista de candidatos com 1x e 2x para uma imagem com largura de exibição conhecida, mantendo src como fonte de reserva.

Uma imagem, dois candidatos

Declare as opções no próprio img

Considere uma imagem exibida com 240 pixels CSS de largura. Estão disponíveis dois arquivos com o mesmo conteúdo e enquadramento:

  • caneca-240.jpg: 240 × 160 pixels.
  • caneca-480.jpg: 480 × 320 pixels.

O atributo srcset lista os candidatos no próprio elemento img. Cada candidato combina caminho + espaço + descritor, e uma vírgula separa os candidatos.

Candidatos para a largura de 240 pixels CSS

html
<img
  src="caneca-240.jpg"
  srcset="caneca-240.jpg 1x, caneca-480.jpg 2x"
  width="240"
  height="160"
  alt="Caneca azul com alça sobre uma mesa">

Dica

O descritor depende da largura de exibição

Nesse cenário, 240 pixels no arquivo oferecem 1x; 480 pixels oferecem 2x. O descritor expressa a densidade oferecida em relação à largura de exibição adotada. Se essa largura mudar, confira novamente os descritores.

Mudou a largura de exibição

O mesmo arquivo em outro contexto

O arquivo caneca-480.jpg tem 480 pixels de largura. Agora, ele será oferecido para uma imagem exibida com 480 pixels CSS de largura. Qual descritor é coerente nesse novo contexto?

Mantenha a reserva e deixe a escolha ao navegador

src continua no elemento

Ao acrescentar srcset, mantenha src como fonte de reserva para navegadores sem suporte a srcset.

No exemplo da caneca, src="caneca-240.jpg" mantém essa fonte de reserva, enquanto srcset declara os dois candidatos.

Dica

Candidatos não são ordens

1x e 2x indicam densidades oferecidas, não tipos de aparelho. Não significam “arquivo para computador” e “arquivo para celular”. O navegador escolhe entre os candidatos; a lista não garante um arquivo específico para cada dispositivo.

Monte a lista de candidatos

Prepare uma imagem de 300 pixels CSS

A imagem será exibida com 300 pixels CSS de largura. Os arquivos disponíveis, com o mesmo conteúdo e enquadramento, são:

  • flor-300.jpg: 300 × 200 pixels.
  • flor-600.jpg: 600 × 400 pixels.

Complete o srcset abaixo, mantendo o src já declarado.

html
<img
  src="flor-300.jpg"
  srcset="___"
  width="300"
  height="200"
  alt="Flor amarela com folhas verdes">

O que entra na lacuna?

Digite apenas o valor de srcset, sem aspas. Coloque o candidato 1x primeiro e o 2x depois, separados por vírgula.

Passo 3 de 7

Declarar a largura real dos arquivos com w

Monte listas de candidatos com descritores w coerentes com as dimensões reais dos arquivos, sem misturá-los com descritores x.

w descreve a largura do arquivo

Declare os pixels disponíveis

No srcset, o descritor w informa a largura real, ou intrínseca, do arquivo em pixels. Ele não indica a largura que a imagem deve ocupar na página.

Se o arquivo tem 800 pixels de largura, seu descritor deve ser 800w.

Exemplo

A altura não entra no descritor

O arquivo ponte.jpg mede 800 × 600 pixels: largura × altura.

O candidato fica ponte.jpg 800w, e não ponte.jpg 600w. Mesmo que a imagem seja exibida com 400 pixels CSS de largura, o descritor continua sendo 800w.

Dica

Confira a imagem, não apenas o nome

Um nome como foto-800.jpg não comprova a largura do arquivo. Confira as dimensões nas propriedades da imagem ou em um editor antes de preencher o descritor.

Associe as larguras verificadas

Qual descritor corresponde a cada arquivo?

As três versões mostram o mesmo parque. Associe cada arquivo ao descritor correto usando as dimensões verificadas, apresentadas como largura × altura.

Toque em um item e depois no par correspondente.

Monte uma lista só com w

Não misture as estratégias

Descritores x e w são estratégias distintas: não use os dois na mesma lista de srcset.

Uma lista com w descreve as resoluções disponíveis sem vinculá-las a uma única largura de exibição. Com os arquivos que você acabou de conferir, o atributo fica assim:

Trecho do atributo srcset

html
srcset="parque-p.jpg 480w,
        parque-800.jpg 960w,
        parque-g.jpg 1440w"

Dica

Falta informar a largura prevista

Esse trecho descreve os arquivos, mas não informa o espaço previsto para a imagem na página. Para avaliar os candidatos com w, o navegador também usa essa informação. No próximo step, você vai declará-la com sizes.

Corrija os candidatos

Use as dimensões reais

Você recebeu três versões da mesma foto de uma praia, com o mesmo enquadramento. As dimensões verificadas são:

  • praia-p.jpg: 600 × 400 pixels.
  • praia-1200.jpg: 900 × 600 pixels.
  • praia-g.jpg: 1500 × 1000 pixels.

O trecho abaixo precisa ser corrigido.

Trecho com erros

html
srcset="praia-p.jpg 400w,
        praia-1200.jpg 1200w,
        praia-g.jpg 2x"

Reescreva o atributo

Mantenha os três nomes de arquivo e reescreva o srcset usando apenas descritores w. Depois, explique brevemente o que estava errado.

Escreva pelo menos 40 caracteres (0/40).

Passo 4 de 7

Informar a largura prevista com sizes

Use um valor em px ou vw para informar a largura prevista da imagem, sem confundir essa informação com o controle do tamanho visual.

Uma largura prevista em pixels CSS

O papel de sizes

sizes informa ao navegador a largura prevista de exibição da imagem para avaliar os candidatos com descritores w.

Neste exemplo, a apresentação da página já está preparada para exibir a imagem com 400 pixels CSS de largura. Por isso, declaramos sizes="400px".

Informação coerente com a apresentação

Os arquivos deste exemplo têm as larguras indicadas pelos descritores.

html
<img
  src="imagens/jardim-400.jpg"
  srcset="imagens/jardim-400.jpg 400w,
          imagens/jardim-800.jpg 800w,
          imagens/jardim-1200.jpg 1200w"
  sizes="400px"
  alt="Jardim com um caminho de pedras entre os canteiros">

Dica

Informar não é dimensionar

srcset e sizes orientam a seleção do recurso; não substituem a definição do tamanho visual. A largura informada deve corresponder à apresentação esperada.

Use sizes com candidatos w: ele não se aplica à seleção baseada em descritores x.

Declare a largura fornecida

Qual valor informa a largura prevista?

Em outra página já preparada, a imagem ocupa sempre 300 pixels CSS de largura. O srcset oferece arquivos de 600 e 900 pixels, declarados como 600w e 900w.

Complete com o valor e a unidade, sem aspas:
sizes="___"

Uma fração da viewport

Quando a largura acompanha a janela

1vw corresponde a 1% da largura da viewport. Assim, 50vw representa metade dessa largura — não metade da largura do elemento pai.

Se a apresentação já faz a imagem ocupar metade da viewport, sizes="50vw" comunica esse comportamento ao navegador.

Largura prevista proporcional à viewport

html
<img
  src="imagens/jardim-400.jpg"
  srcset="imagens/jardim-400.jpg 400w,
          imagens/jardim-800.jpg 800w,
          imagens/jardim-1200.jpg 1200w"
  sizes="50vw"
  alt="Jardim com um caminho de pedras entre os canteiros">

Exemplo

Qual largura serve de referência?

Com uma viewport de 1.000 pixels CSS, 50vw informa 500 pixels CSS.

Mesmo que o elemento pai tenha 700 pixels CSS de largura, o valor continua sendo 500, não 350. Se a viewport passar para 800 pixels CSS, 50vw passa a informar 400 pixels CSS.

Informe sem confundir com o tamanho visual

Um quarto da viewport

A apresentação de uma página já faz a imagem ocupar um quarto da largura da viewport, acompanhando as mudanças de largura da janela. O srcset usa descritores w.

Complete usando a unidade vw, sem aspas:
sizes="___"

Basta mudar sizes?

Nessa mesma página, basta trocar sizes="25vw" por sizes="50vw" para garantir que a imagem passe a ocupar visualmente metade da largura da viewport.

Passo 5 de 7

Adaptar sizes à largura da viewport

Combine condições de largura, organize sua ordem e acrescente um valor padrão para informar a largura prevista da imagem.

Uma condição e um valor padrão

Considere um img com candidatos w em uma página com apresentação já preparada. A imagem ocupa toda a largura da viewport até 600 pixels CSS e ocupa 480 pixels CSS acima desse limite.

Informe essa previsão no atributo sizes:

Trecho do atributo

html
sizes="(max-width: 600px) 100vw, 480px"

Leia da esquerda para a direita

(max-width: 600px) verifica se a largura da viewport é menor ou igual a 600 pixels CSS. O valor seguinte, 100vw, informa a largura prevista da imagem quando essa condição vale.

As entradas são separadas por vírgulas. Vale a primeira condição satisfeita. O último valor, 480px, não tem condição: ele é usado quando nenhuma condição anterior é satisfeita.

Atenção

Sem sizes, a referência é 100vw

Ao omitir sizes em uma lista com descritores w, o navegador usa 100vw como referência. Isso pode não corresponder ao espaço ocupado pela imagem. Essa referência não define seu tamanho visual.

Acrescente o valor final

Complete a previsão de largura

Em outra página preparada, a imagem ocupa 80% da largura da viewport até 640 pixels CSS. Acima disso, ocupa 520 pixels CSS.

Complete com o valor final, incluindo a unidade:

sizes="(max-width: 640px) 80vw, ____"

Quando as condições se sobrepõem

Mais de duas faixas

Agora, considere uma imagem cuja largura prevista seja:

  • Até 600 pixels CSS de viewport: 100vw.
  • Acima de 600 e até 1000 pixels CSS: 50vw.
  • Acima de 1000 pixels CSS: 480px.

Como as condições com max-width se sobrepõem, coloque o menor limite primeiro:

A ordem faz parte da informação

html
sizes="(max-width: 600px) 100vw,
       (max-width: 1000px) 50vw,
       480px"

Exemplo

Viewport de 500 pixels CSS

As duas condições são verdadeiras: 500 é menor que 600 e que 1000. Mesmo assim, vale apenas a primeira: 100vw, ou 500 pixels CSS.

Se a condição de 1000px viesse antes, valeria 50vw, ou 250 pixels CSS. Ela impediria o uso da entrada de 600px. O navegador não procura a condição mais específica: usa a primeira satisfeita.

Organize e teste a lista

Ordene as entradas de sizes

A apresentação desta imagem já está preparada para estas larguras:

  • Viewport até 500 pixels CSS: imagem com 100vw.
  • Viewport acima de 500 e até 900 pixels CSS: imagem com 50vw.
  • Viewport acima de 900 pixels CSS: imagem com 560px.

Ordene as entradas. Ao escrever o atributo, separe-as por vírgulas.

  1. 560px
  2. (max-width: 500px) 100vw
  3. (max-width: 900px) 50vw

Confira as larguras, inclusive nos limites

Com a lista organizada conforme as regras acima, associe cada largura da viewport à largura informada por sizes. Todas as medidas estão em pixels CSS.

Toque em um item e depois no par correspondente.

Passo 6 de 7

Entender a escolha feita pelo navegador

Calcule a densidade efetiva, reconheça um sizes incoerente e explique por que a seleção de um arquivo não é garantida.

Da largura à densidade efetiva

Uma divisão para cada candidato

Com descritores w, o navegador usa a largura informada por sizes para calcular a densidade efetiva de cada candidato:

Densidade efetiva = largura do arquivo em pixels ÷ largura indicada por sizes em pixels CSS.

Se sizes tiver condições, use a largura que vale para a viewport do cenário.

Exemplo

Com sizes="400px"

Para arquivos cujas larguras reais correspondem aos descritores:

  • 400w → 400 ÷ 400 = 1
  • 800w → 800 ÷ 400 = 2
  • 1200w → 1200 ÷ 400 = 3

Em uma tela de densidade 2, o candidato de 800w corresponde à referência calculada. Isso orienta a seleção, mas não obriga o navegador a escolhê-lo.

Calcule a densidade efetiva

A densidade pode ser fracionária

Uma imagem tem sizes="600px". Um dos candidatos tem largura real de 900 pixels e está declarado como 900w.

A densidade efetiva desse candidato é ___ vezes. Digite apenas o número.

Referência correta, escolha flexível

A conta não decide sozinha

O navegador relaciona as densidades efetivas à densidade da tela e às condições de exibição. Condições de rede, preferências do usuário, cache — arquivos já armazenados — e decisões internas também podem influenciar a seleção.

Por isso, não é possível garantir a escolha de um arquivo específico.

Exemplo

Quando sizes informa a largura errada

Considere uma imagem que ocupa 400 pixels CSS na página:

  • sizes="800px" superestima a largura e pode favorecer arquivos de maior resolução, com transferência desnecessária de dados.
  • sizes="200px" subestima a largura e pode favorecer uma resolução insuficiente, reduzindo a definição visual.

Esses valores alteram a referência da seleção, não o tamanho visual da imagem.

Dica

Revise a coerência, não uma promessa

Uma escolha inesperada não prova erro na marcação. Confira se os descritores correspondem às dimensões reais dos arquivos e se sizes representa a largura de exibição no cenário avaliado.

Identifique o erro e justifique a escolha

Um cenário para revisar

Nesta página com apresentação já preparada, a imagem ocupa sempre 400 pixels CSS de largura. A tela tem densidade 2. As larguras reais dos arquivos correspondem aos descritores abaixo.

Marcação a avaliar

html
<img
  src="lago-400.jpg"
  srcset="lago-400.jpg 400w,
          lago-800.jpg 800w,
          lago-1200.jpg 1200w"
  sizes="800px"
  alt="Barco à margem de um lago"
>

O que corrigir? O que não exigir?

Qual declaração está incoerente com a largura visual e como você a corrigiria?

Após a correção, lago-800.jpg passa a ser uma escolha obrigatória? Justifique citando um fator que pode influenciar a seleção.

Escreva pelo menos 30 caracteres (0/30).

Passo 7 de 7

Aplicar e revisar srcset e sizes

Complete dois elementos img e revise a coerência entre arquivos, descritores e larguras previstas, sem confundir seleção do recurso com tamanho visual.

Duas situações para resolver

Escolha a estratégia

Com largura de exibição fixa e conhecida, descritores x são uma opção direta. Quando essa largura varia, w + sizes permite declarar as resoluções disponíveis e informar a largura prevista em cada situação.

Agora você vai aplicar essas estratégias em dois elementos img.

Dica

Preserve o que já está pronto

Os arquivos de cada conjunto já existem e têm o mesmo conteúdo, enquadramento e proporção. As dimensões informadas foram verificadas.

Acrescente apenas os atributos solicitados: mantenha src, alt, width e height como foram fornecidos.

Caso 1 — largura fixa

Uma imagem de produto

A imagem ocupa sempre 240 pixels CSS de largura.

Arquivos disponíveis, com largura × altura em pixels:

  • vaso-240.jpg: 240 × 160;
  • vaso-480.jpg: 480 × 320.

Elemento preparado

html
<img
  src="vaso-240.jpg"
  alt="Vaso azul sobre uma mesa"
  width="240"
  height="160"
>

Complete com descritores x

Reescreva o img completo, acrescentando um srcset com os dois arquivos e descritores x. Em uma frase, justifique os valores dos descritores.

Caso 2 — largura variável

Uma foto na página

A apresentação da página já está preparada para exibir a imagem assim:

  • viewport até 600 pixels CSS: 100% da largura da viewport;
  • acima de 600 e até 1000 pixels CSS: 80% da largura da viewport;
  • acima de 1000 pixels CSS: 800 pixels CSS.

Arquivos disponíveis, com largura × altura em pixels:

  • jardim-pequeno.jpg: 480 × 320;
  • jardim-medio.jpg: 960 × 640;
  • jardim-grande.jpg: 1440 × 960.

Elemento preparado

html
<img
  src="jardim-medio.jpg"
  alt="Caminho de pedras entre canteiros floridos"
  width="960"
  height="640"
>

Integre w e sizes

Reescreva o img com os três arquivos em srcset usando w. Acrescente sizes com duas condições max-width e um valor final padrão.

Justifique o uso de w + sizes e explique por que esses atributos não definem, por si só, o tamanho visual nem garantem a escolha de um arquivo específico.

Revisão final

Resumo

Checklist antes de concluir

Compare suas duas respostas com estes critérios:

  • Com x, os descritores são coerentes com a largura de exibição adotada. Com w, correspondem às larguras reais dos arquivos. Não misture as estratégias na mesma lista.
  • sizes corresponde à largura visual esperada. A primeira condição satisfeita vale, e o último valor sem condição cobre os demais casos.
  • src permanece como fonte de reserva, e os demais atributos fornecidos foram preservados.
  • A marcação oferece arquivos que já existem; não gera novas resoluções.
  • srcset e sizes orientam a seleção do recurso, não substituem o controle do tamanho visual nem impõem um candidato ao navegador.

Tutorial concluído

Parabéns! Você concluiu: Oferecer resoluções de imagem com srcset e sizes

Você concluiu “Oferecer resoluções de imagem com srcset e sizes”. Use o checklist para configurar e revisar candidatos tanto para imagens de largura fixa quanto variável.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso