Design responsivo

Crie páginas web que funcionem bem em celulares, tablets e computadores. Configure a área de visualização para que os navegadores móveis usem a largura real da tela, dimensione textos e caixas com unidades relativas e unidades relativas à área de visualização e altere layouts com consultas de mídia escritas com prioridade para dispositivos móveis. Use consultas de contêiner para que os componentes se adaptem ao espaço disponível, forneça imagens adequadas a cada tela com srcset, sizes e <picture> e teste as páginas em diferentes larguras, níveis de zoom, entradas por toque e preferências do leitor.

BásicoAula 6 de 8 do curso Curso de Noções básicas de desenvolvimento web

O que você vai aprender

  1. Explique o que é design responsivo, faça os navegadores móveis organizarem uma página na largura real do dispositivo e dimensione textos e caixas com unidades que se ajustam.
    • Explique o design responsivo e configure a área de visualização
      Descreva o que o design responsivo faz, como os pixels CSS se relacionam com os pixels do dispositivo e por que toda página responsiva precisa da tag meta da área de visualização.
    • Dimensione textos e caixas com unidades relativas
      Use porcentagens, em, rem e ch para que as caixas acompanhem seu contêiner e o texto acompanhe a configuração de tamanho de fonte do leitor.
    • Use unidades relativas à área de visualização e dimensionamento fluido
      Dimensione elementos em relação à área de visualização com vw, vh e as unidades mais recentes para áreas pequenas, grandes e dinâmicas, e defina limites com min(), max() e clamp().
  2. Escreva consultas de mídia, crie estilos com prioridade para dispositivos móveis e pontos de quebra escolhidos pelo conteúdo e transforme layouts com flexbox e grade em layouts que se adaptem à tela.
    • Escreva consultas de mídia
      Use tipos de mídia, condições de largura, operadores lógicos e outras características de mídia e posicione as consultas corretamente na cascata.
    • Crie primeiro para dispositivos móveis com pontos de quebra baseados no conteúdo
      Escreva estilos básicos para telas pequenas, adicione consultas min-width à medida que o espaço aumenta e posicione pontos de quebra onde o conteúdo precisar deles.
    • Torne responsivos os layouts com flexbox e grade
      Altere layouts em pontos de quebra e use padrões intrínsecos de grade e flexbox que se adaptam sem nenhuma consulta de mídia.
  3. Declare contêineres de consulta, estilize componentes com consultas e unidades de contêiner e escolha entre consultas de mídia, consultas de contêiner e layouts intrínsecos.
    • Configure contêineres e escreva consultas de contêiner
      Declare um contêiner de consulta com container-type, escreva regras @container, nomeie contêineres e evite os erros comuns de configuração.
    • Dimensione com unidades relativas ao contêiner e escolha a ferramenta adequada
      Use unidades relativas ao contêiner de consulta para dimensões que acompanham um contêiner e decida quando usar uma consulta de mídia, uma consulta de contêiner ou um layout intrínseco.
  4. Mantenha imagens e mídias incorporadas dentro de seus contêineres, deixe o navegador escolher um arquivo adequado com srcset e sizes e altere o recorte ou o formato com o elemento picture.
    • Torne flexíveis as imagens e as mídias incorporadas
      Impeça que imagens e vídeos transbordem, mantenha suas proporções, reserve espaço antes de carregá-los e controle o recorte com object-fit.
    • Deixe o navegador escolher o tamanho da imagem com srcset e sizes
      Ofereça a mesma imagem em vários arquivos, descreva a largura em que ela é exibida e preveja qual arquivo o navegador carrega.
    • Altere o recorte ou o formato com o elemento picture
      Use picture e source para mostrar um recorte diferente em larguras diferentes ou para oferecer formatos modernos de imagem com uma alternativa.
  5. Verifique páginas em diferentes larguras, níveis de zoom e dispositivos reais, identifique e corrija transbordamentos e adapte-as à entrada por toque e às configurações do leitor.
    • Teste em diferentes larguras e corrija o transbordamento
      Use as ferramentas de design responsivo do navegador e dispositivos reais, verifique o refluxo em 320 pixels CSS e identifique as causas da rolagem horizontal.
    • Projete para toque, zoom e preferências do usuário
      Dimensione controles para os dedos, evite interações que dependam apenas da passagem do ponteiro, ofereça suporte a zoom e orientação e responda às preferências de movimento reduzido, esquema de cores e impressão.

Guia de estudo de Design responsivo

5 capítulos

1

Prepare uma página para se adaptar a qualquer tela

Um bom comportamento responsivo começa com o espaço que o navegador considera disponível e com a referência que cada dimensão acompanha. Configure a área de visualização móvel, diferencie pixels CSS de pontos da tela e escolha unidades para textos, caixas e seções de altura total. Um contêiner que pode encolher e um texto que respeita as configurações do leitor dão uma base confiável para as mudanças posteriores de layout.

1.1 Uma página, muitas larguras de tela

O design responsivo permite que uma página HTML se adapte conforme o espaço disponível muda. Um celular na vertical, um tablet na horizontal e uma janela de computador redimensionada devem mostrar texto legível, controles utilizáveis e imagens que caibam na tela. Você projeta para uma faixa contínua de larguras, incluindo os espaços entre tamanhos conhecidos de dispositivos.

Ethan Marcotte introduziu o termo em 2010 em torno de três técnicas: layouts fluidos, imagens flexíveis e consultas de mídia. Flexbox, grade, consultas de contêiner e marcação de imagens responsivas agora ampliam esse conjunto de ferramentas. Cada uma resolve uma parte diferente do trabalho; uma página precisa de mais de uma única configuração.

Conte os pixels certos

Um pixel CSS é uma unidade de layout, não necessariamente um ponto na tela. O CSS define 96px como equivalente a 1in; em uma tela, essa relação não garante uma polegada física medida. Uma tela de alta densidade usa vários pixels do dispositivo para cada pixel CSS. A razão de pixels do dispositivo descreve essa relação.

Um celular de 390 pixels CSS de largura com razão 3 tem 1170 pixels do dispositivo na largura. Uma consulta de largura ainda vê 390px. Os pontos extras ajudam a desenhar textos e imagens nítidos; eles não dão ao layout três vezes mais espaço. Essa distinção importa quando você escolher arquivos de imagem mais adiante.

A área de visualização é a área do navegador usada para exibir a página, excluindo suas próprias barras de ferramentas. Redimensionar uma janela ou girar um dispositivo altera o espaço disponível. Em celulares, mostrar e ocultar as barras de ferramentas também pode mudar a altura visível.

Informe aos navegadores móveis a largura pretendida

Os navegadores móveis podem organizar uma página sem configuração em uma área de visualização virtual larga, normalmente em torno de 980 pixels CSS, e depois reduzi-la para caber na tela. Em um celular de 390px, a escala é de cerca de 0,4. Um texto declarado com 16px parece então ter cerca de 6,4px de altura, e uma consulta para largura estreita pode nunca corresponder, pois a área de visualização do layout ainda é larga.

Coloque isto dentro do <head> do documento:

<meta name="viewport" content="width=device-width, initial-scale=1">

width=device-width solicita a largura do dispositivo em pixels CSS. initial-scale=1 inicia com zoom normal. Depois de adicioná-la, recarregue a página em uma visualização de navegador do tamanho de um celular e verifique tanto o texto quanto as consultas de largura ativas.

Mantenha o zoom disponível. Não adicione user-scalable=no ou maximum-scale=1. Leitores com baixa visão precisam ampliar o conteúdo; o texto deve permitir ampliação para 200% sem perda de conteúdo ou funcionalidade. Alguns navegadores móveis ignoram restrições de zoom, mas a própria página deve oferecer suporte ao zoom.

Verifique também o layout

A tag da área de visualização não altera uma caixa de largura fixa. Uma .page com width: 960px ainda ultrapassa uma área de visualização de 390px. Transforme larguras rígidas em larguras fluidas com limites, torne as mídias flexíveis e adicione mudanças de layout onde o conteúdo precisar.

Para diagnosticar uma página minúscula no celular, primeiro inspecione o <head> em busca da tag da área de visualização. Para diagnosticar uma página de tamanho normal que rola lateralmente, inspecione as caixas que ultrapassam a largura disponível. Esses sintomas apontam para causas diferentes.

Principais conclusões

  • Páginas responsivas se adaptam a uma faixa contínua de larguras.
  • O layout usa pixels CSS; a razão de pixels do dispositivo descreve a densidade da tela.
  • Coloque a tag meta da área de visualização no cabeçalho do documento.
  • Mantenha o zoom habilitado e torne flexível o conteúdo de largura fixa.

1.2 Dimensões que acompanham texto e contêineres

Escolha uma unidade perguntando qual referência a dimensão deve acompanhar. Uma coluna geralmente acompanha seu bloco de referência. O preenchimento interno de um botão pode acompanhar seu texto. O comprimento da linha de um parágrafo acompanha a fonte. Usar a referência adequada faz as mudanças funcionarem em conjunto.

UnidadeReferênciaAplicação útil
%Uma largura percentual acompanha a largura do bloco de referênciaCaixas e colunas fluidas
emTamanho de fonte do elemento pai para font-size; tamanho de fonte do próprio elemento para outras propriedadesPreenchimento interno de botões e ícones
remTamanho de fonte do elemento raizTexto e espaçamento compartilhado
chLargura do glifo “0” da fonteUm limite legível para o comprimento da linha
pxPixels CSS de referênciaUma borda fina
Porcentagens e o modelo de caixa

Uma caixa com width: 50% tem 300px de largura em um bloco de referência de 600px e 180px em um de 360px. Preenchimentos internos e margens em porcentagem, incluindo os valores superior e inferior, também usam a largura do bloco de referência na escrita horizontal comum. Assim, padding-top: 10% em um elemento pai de 600px de largura equivale a 60px.

A altura é diferente. Uma altura percentual precisa de uma altura de referência definida. Quando a altura de um elemento pai comum vem de seu conteúdo, height: 50% geralmente se comporta como auto. Deixe as caixas de texto crescerem com seu conteúdo em vez de usar alturas percentuais para controlá-las.

Use um contêiner fluido com um máximo:

.page {
  box-sizing: border-box;
  width: 100%;
  max-width: 70rem;
  margin-inline: auto;
  padding-inline: 1rem;
}

Em uma tela estreita, a caixa preenche a largura disponível, com o preenchimento interno dentro dela. Em uma tela larga, ela para em 70rem e as margens automáticas na direção em linha a centralizam. Com 16px no elemento raiz, sua largura externa máxima é 1120px. border-box inclui o preenchimento interno e as bordas na largura declarada; com content-box, a largura de 100% mais o preenchimento interno transbordaria. Uma width: 70rem fixa também impediria a caixa de encolher.

Por exemplo, um elemento envolvente border-box de 340px de largura com 16px de preenchimento interno em cada lado deixa 308px para seu conteúdo quando não há borda. A largura declarada descreve a parte externa dessa caixa. Se você mudar a mesma declaração para content-box, apenas o conteúdo terá 340px e a largura externa passará a ser 372px. Inspecionar essas larguras separadas nas ferramentas do desenvolvedor facilita a identificação de transbordamentos relacionados ao preenchimento interno.

Deixe as configurações de texto se propagarem

Deixe o tamanho de fonte do elemento raiz no padrão do leitor ou use uma porcentagem como 100%. Com 16px no elemento raiz, 1.5rem equivale a 24px; com 20px, equivale a 30px. Uma definição fixa html { font-size: 16px; } impede que a preferência de fonte padrão se propague para as dimensões relativas ao elemento raiz.

Para font-size, em usa o tamanho de fonte do elemento pai. Listas aninhadas, cada uma definida com 1.2em, acumulam esse efeito: 16px se tornam 19,2px e depois 23,04px. Use rem quando todos os níveis de aninhamento devem manter o mesmo tamanho.

Em outras propriedades, em usa o tamanho de fonte do próprio elemento. Um botão com padding: 0.5em 1em ganha preenchimento interno à medida que seu texto cresce. Isso mantém o espaçamento proporcional sem um ponto de quebra separado.

Para parágrafos, max-width: 65ch fornece um limite útil de leitura. A unidade mede a largura de “0”, então não conta caracteres exatamente em uma fonte proporcional. Uma orientação comum de leitura é ter cerca de 45–75 caracteres por linha; verifique a fonte e o texto reais no navegador.

Principais conclusões

  • Porcentagens fazem as larguras acompanhar seu bloco de referência.
  • Use border-box para manter o preenchimento interno dentro da largura declarada.
  • rem acompanha o tamanho de fonte do elemento raiz sem acúmulo por aninhamento.
  • em pode manter o espaçamento de um componente proporcional ao seu próprio texto.
  • ch oferece um limite de comprimento de linha baseado na fonte.

1.3 Dimensões fluidas com limites úteis

Unidades relativas à área de visualização acompanham a área de visualização do navegador mesmo quando um elemento está dentro de uma caixa menor. 1vw é 1% da largura da área de visualização; 1vh é 1% de sua altura. vmin usa a menor dimensão e vmax usa a maior. Em uma área de visualização de 800px de largura, 50vw equivale a 400px. Em uma área de 300px de altura, 70vh equivale a 210px.

Essa referência importa. Uma barra lateral pode ter apenas 260px de largura em uma janela de 1400px. Um elemento filho com width: 50vw pede 700px, então não caberá nessa barra lateral. Use uma porcentagem quando o elemento filho deve acompanhar o elemento pai. Para um bloco comum de largura total, prefira width: 100%: 100vw pode incluir a largura da barra de rolagem de um computador e criar rolagem lateral.

Escolha a altura móvel pretendida

As barras de ferramentas do navegador móvel podem reduzir a área visível da página. As unidades de altura da área de visualização distinguem três estados:

UnidadeAltura que acompanhaPrincipal característica
svhÁrea de visualização pequena, com as barras de ferramentas visíveisTamanho estável que cabe nesse estado
lvhÁrea de visualização grande, com as barras de ferramentas ocultasPode se estender por trás das barras visíveis
dvhÁrea de visualização dinâmica atualPode mudar de tamanho durante a rolagem

A unidade vh corresponde à área de visualização grande. Também existem variantes de largura, como svw, lvw e dvw. Para uma seção inicial alta, min-height: 100svh define um mínimo estável e permite que conteúdos mais longos cresçam. Uma height fixa deixa o conteúdo transbordar quando ele fica mais alto. Unidades dinâmicas podem acompanhar mudanças nas barras de ferramentas, mas as atualizações podem acontecer em etapas e fazer o layout se mover.

Escolha a referência de altura conforme o comportamento necessário. Uma seção inicial estável pode usar a área de visualização pequena mesmo depois que as barras de ferramentas desaparecem; ela não precisa se esticar novamente só porque mais espaço fica visível. Um painel destinado a acompanhar essa mudança de espaço pode usar unidades dinâmicas, aceitando o possível movimento. Em ambos os casos, uma altura mínima permite que conteúdo adicional estenda a seção no fluxo normal.

Defina limites para um valor fluido

min() seleciona o menor valor e pode limitar uma largura: width: min(100%, 40rem) preenche o elemento pai até atingir 40rem. max() seleciona o maior valor e fornece um limite inferior. clamp() fornece um limite inferior, um valor preferido e um limite superior, nessa ordem.

.title {
  font-size: clamp(1rem, 0.5rem + 2vw, 2rem);
}

Com 16px no elemento raiz, o limite inferior é 16px, o tamanho preferido é 8px mais 2% da largura da área de visualização e o limite superior é 32px. Veja os limites:

  1. Em 375px, o tamanho preferido é 15,5px, então o mínimo de 16px se aplica.
  2. Em 1000px, o tamanho preferido é 28px, dentro dos limites.
  3. Em 1400px, o tamanho preferido é 36px, então o máximo de 32px se aplica.

As mesmas funções aceitam cálculos como min(100% - 2rem, 70rem). Mantenha valores de comprimento compatíveis e espaços ao redor do operador de subtração.

Texto dimensionado apenas em vw pode ficar minúsculo em telas estreitas e enorme em telas largas. O zoom no computador também estreita a área de visualização em pixels CSS, o que pode anular a ampliação desse texto. Inclua uma parte relativa à fonte e limites úteis e teste a ampliação do texto: uma expressão mista de rem/vw por si só não garante um aumento completo para 200%.

Principais conclusões

  • Unidades relativas à área de visualização acompanham a janela, mesmo dentro de um elemento pai estreito.
  • Use svh para a área de visualização pequena e dvh para a altura visível que muda.
  • min() limita um valor por cima; max() fornece um limite inferior.
  • clamp() define um mínimo, um valor preferido e um máximo.
  • Teste a tipografia fluida com zoom e com diferentes larguras de janela.
2

Adapte layouts com consultas de mídia

Um layout precisa funcionar enquanto a janela muda, inclusive entre suas disposições principais. Escreva condições que apliquem CSS no momento certo, comece com uma página estreita utilizável e adicione colunas quando houver espaço para o conteúdo. Flexbox e grade podem lidar automaticamente com muitas mudanças; pontos de quebra explícitos lidam com os momentos em que a própria disposição precisa mudar.

2.1 Condições que alteram regras CSS

Uma consulta de mídia aplica CSS quando uma condição sobre a saída, a área de visualização ou as preferências do leitor é verdadeira. O navegador verifica novamente quando as condições relevantes mudam, então redimensionar uma janela pode alterar os estilos sem recarregar a página.

.heading { font-size: 1.25rem; }

@media (min-width: 40em) {
  .heading { font-size: 2rem; }
}

Com o padrão usual de 16px do navegador, 40em equivale a 640px. O título maior se aplica a partir dessa largura. Em consultas de mídia, em e rem usam o tamanho inicial de fonte do navegador, e não um tamanho definido pelo autor em <html>. Para um leitor com padrão de 20px, a mesma mudança ocorre em 800px.

Leia as condições com precisão

min-width inclui seu limite: 600px corresponde a min-width: 600px. max-width também inclui seu limite. A sintaxe de intervalos torna a comparação explícita:

@media (width >= 600px) { /* wider layout */ }
@media (600px <= width < 900px) { /* middle band */ }

Se você combinar max-width: 600px com min-width: 600px, ambas corresponderão em 600px. Usar 599px e 600px deixa uma lacuna em larguras fracionárias, como 599,5px. Consultas de largura mínima crescente evitam essa lacuna; intervalos complementares, como < 600px e >= 600px, são outra opção.

Os tipos de mídia identificam a saída: screen, print ou o padrão all. @media print pode remover a navegação e usar texto escuro em papel branco. As condições se combinam de maneiras úteis:

FormaSignificado
screen and (min-width: 40em)O tipo de saída e a largura devem corresponder
(max-width: 30em), printCorresponde a uma saída estreita ou à impressão
not printA saída não é impressão

only não tem efeito útil nos navegadores atuais. Largura e altura descrevem a área de visualização; orientation: portrait significa que sua altura é pelo menos igual à largura. Outras características verificam precisão de entrada, passagem do ponteiro, resolução, movimento reduzido e esquema de cores. Uma área de visualização na orientação paisagem não indica se o leitor tem um mouse.

Em uma condição prática, @media (hover: hover) and (pointer: fine) exige uma entrada principal capaz de passar o ponteiro sobre elementos e apontar com precisão. Uma janela estreita controlada por mouse pode corresponder a ela, enquanto um dispositivo largo que usa principalmente toque pode não corresponder. Use a consulta para efeitos opcionais de ponteiro; mantenha a ação principal disponível pelos controles normais da página.

Observe a cascata

Uma consulta de mídia não aumenta a especificidade de um seletor. Em uma folha de estilo comum com regras de mesma especificidade, a última declaração correspondente prevalece. Se a regra básica .heading aparecer depois da regra para telas mais largas acima, ela também prevalecerá em larguras maiores. Coloque as regras básicas primeiro e as consultas que as alteram depois.

Você também pode associar uma condição em HTML. <link rel="stylesheet" href="print.css" media="print"> aplica suas regras na impressão, mas um navegador ainda pode baixar o arquivo com prioridade menor. O atributo media de um elemento <source> usa condições para escolher uma origem de imagem.

Principais conclusões

  • Consultas de mídia respondem à saída, às características da área de visualização e às preferências do usuário.
  • min-width e max-width incluem seus valores de limite.
  • and exige todas as condições; uma vírgula oferece alternativas.
  • As regras de consulta ainda obedecem à cascata e à especificidade normais.
  • Unidades relativas em consultas usam o tamanho inicial de fonte do navegador.
  • Intervalos complementares evitam lacunas em larguras fracionárias.

2.2 Acrescente layout conforme o espaço fica disponível

O CSS com prioridade para dispositivos móveis começa com o layout estreito como regras comuns fora de qualquer consulta. Consultas de largura mínima acrescentam mudanças quando o espaço permite. Isso combina com o fluxo normal do documento: os blocos já são empilhados verticalmente, então a página básica geralmente precisa de pouco código de layout.

O CSS com prioridade para telas de computador começa com regras para telas largas e usa consultas de largura máxima para desfazê-las. Ambas as abordagens podem funcionar, mas a prioridade para dispositivos móveis geralmente torna a base e cada mudança posterior mais fáceis de acompanhar.

Comece com uma coluna
.cards {
  display: grid;
  gap: 1rem;
}

@media (min-width: 40em) {
  .cards { grid-template-columns: 1fr 1fr; }
}

@media (min-width: 64em) {
  .cards { grid-template-columns: repeat(3, 1fr); }
}

Com o padrão de 16px, as mudanças acontecem em 640px e 1024px. Uma área de visualização de 500px mostra uma coluna. Em 800px, a primeira consulta corresponde e produz duas colunas. Em 1200px, ambas as consultas correspondem; a regra posterior produz três colunas.

A consulta para larguras maiores não desativa a consulta anterior. Se você inverter a ordem delas, a regra de 40em ficará por último e reduzirá o layout largo para duas colunas. Mantenha as consultas de largura mínima em ordem crescente quando elas alterarem a mesma propriedade com a mesma especificidade.

Encontre o ponto de quebra no conteúdo

Um ponto de quebra é onde uma consulta altera o layout. Comece com o conteúdo real em uma janela estreita e aumente sua largura lentamente. Procure quebras inadequadas na navegação, parágrafos que ficam longos demais ou cartões que se esticam além de uma largura útil para leitura. Adicione uma mudança onde ela melhorar esse conteúdo.

Não escolha um ponto de quebra só porque um dispositivo conhecido tem aquela largura. As telas variam, janelas de computador podem ter qualquer tamanho e uma fonte maior pode fazer a mesma navegação precisar de mais espaço. Pontos de quebra em unidades relativas podem ajudar o layout a responder ao tamanho padrão de texto do leitor.

Após cada mudança, teste os dois lados do ponto de quebra e várias larguras entre as mudanças. Um layout que parece correto apenas em 375px, 768px e 1280px ainda tem muitas oportunidades de falhar. Larguras fluidas, quebra de linha e colunas automáticas de grade cuidam de grande parte desse espaço intermediário.

Teste a navegação e a lista de cartões juntas depois de adicionar uma barra lateral à página. A janela ficou mais larga, mas a coluna principal pode ter ficado mais estreita porque agora compartilha esse espaço. Um layout de cartões que funcionava logo abaixo do ponto de quebra da página pode falhar logo acima dele. Esse é um bom caso para deixar os cartões quebrarem a linha ou se ajustarem a colunas automáticas, enquanto a própria página usa uma consulta explícita.

Mantenha o conteúdo e os downloads úteis

Usuários de celular também precisam do conteúdo da página. Se uma explicação secundária ocupar espaço demais, empilhe-a mais abaixo ou coloque-a em um controle nativo de expansão e recolhimento <details> que os leitores possam abrir. Não remova informações necessárias apenas para deixar uma captura de tela estreita mais organizada.

Começar com uma tela estreita também ajuda você a escolher uma página padrão leve. Ocultar uma imagem grande com CSS não impede seu download de forma confiável; use marcação de imagens responsivas para oferecer arquivos adequados. Uma página legível de uma coluna com uma imagem menor é um bom ponto de partida; layouts mais largos acrescentam espaço e reorganizam o conteúdo.

Principais conclusões

  • Escreva regras básicas para telas estreitas fora das consultas.
  • Adicione mudanças min-width correspondentes em ordem crescente.
  • Posicione pontos de quebra onde o conteúdo precisar de uma mudança de layout.
  • Teste larguras entre os pontos de quebra, inclusive com texto maior.
  • Reorganize conteúdo útil para celulares e envie arquivos de imagem adequados.

2.3 Linhas e colunas responsivas

Um layout pode se adaptar por meio de uma consulta explícita ou de suas próprias regras de dimensionamento. Use uma consulta quando a disposição precisar mudar em um ponto escolhido. Use um layout intrínseco quando os itens simplesmente precisarem caber no espaço disponível.

Deixe a grade determinar o número de colunas
.tiles {
  display: grid;
  grid-template-columns:
    repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
  gap: 1rem;
}

Com 16px no elemento raiz, cada coluna procura ter pelo menos 240px. A grade encaixa o máximo possível, subtrai os espaçamentos e depois divide a largura restante com 1fr. Em um contêiner de 1000px, quatro colunas de 240px mais três espaçamentos de 16px precisariam de 1008px, então cabem apenas três. Cada uma recebe cerca de 322,7px. Um contêiner de 700px recebe duas colunas de 342px; um de 360px recebe uma.

O min(15rem, 100%) interno importa quando o contêiner tem menos de 240px de largura. Ele permite que o mínimo passe a ser a largura disponível. Sem ele, o mínimo de 240px forçaria o transbordamento. auto-fit recolhe trilhas vazias, permitindo que poucos itens se expandam; auto-fill mantém trilhas vazias e pode deixar esses itens mais estreitos.

Deixe os itens flexíveis quebrarem a linha
.links {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}
.links > * { flex: 1 1 15rem; }

Cada item começa com uma base de 15rem, pode encolher ou crescer e passa para outra linha quando a linha não comporta mais itens. Cada linha divide seu próprio espaço restante. Assim, dois itens na última linha podem ficar mais largos que os itens acima. A grade é mais adequada quando as larguras das colunas devem ficar alinhadas entre linhas. A navegação também pode quebrar a linha, ou uma consulta pode mudar seu flex-direction para column.

Mude a página inteira quando necessário

Comece a página em fluxo normal. Depois, adicione uma disposição com barra lateral:

@media (min-width: 48em) {
  .page {
    display: grid;
    grid-template-columns: 16rem minmax(0, 1fr);
    gap: 1rem;
  }
}

Com o padrão usual de 16px, isso começa em 768px. A primeira coluna é a barra lateral; a segunda ocupa o espaço restante. O mínimo zero permite que a trilha principal encolha; seu conteúdo ainda precisa quebrar a linha ou rolar adequadamente. Áreas nomeadas de grade podem expressar uma disposição mais complexa.

Mantenha o HTML em uma ordem de leitura coerente. A propriedade flexível order e o posicionamento na grade mudam onde os elementos aparecem, mas o foco do teclado e os leitores de tela ainda seguem a ordem no código-fonte. Teste percorrendo os links com a tecla Tab depois de reorganizá-los.

Uma tabela de dados larga pode precisar de sua estrutura bidimensional. Coloque-a em um elemento envolvente com rolagem local, usando overflow-x: auto, tabindex="0", role="region" e um nome acessível, como aria-label="Event schedule". Apenas a região da tabela deve rolar lateralmente; a página ao redor ainda deve se reorganizar.

Principais conclusões

  • Layouts intrínsecos se reorganizam sem um ponto de quebra.
  • auto-fit e minmax() encaixam colunas e dividem o espaço livre.
  • Limite o mínimo da coluna a 100% para evitar transbordamento em contêineres estreitos.
  • Linhas flexíveis dividem o espaço independentemente; a grade alinha colunas entre linhas.
  • A reorganização visual não altera a ordem de leitura ou de tabulação do HTML.
  • Mantenha tabelas largas em uma região de rolagem alcançável e nomeada.
3

Faça os componentes se adaptarem ao contêiner

Um componente pode aparecer em uma coluna principal larga ou em uma barra lateral estreita na mesma página. Sua própria largura disponível pode ser mais importante que a largura da janela. Declare um contêiner para medição, altere os elementos dentro dele e use dimensões relativas ao contêiner quando forem adequadas ao componente. Escolher a referência correta mantém um cartão reutilizável útil onde quer que ele seja colocado.

3.1 Um cartão que acompanha seu próprio espaço

Uma consulta de largura da área de visualização dá a mesma resposta para todos os componentes de uma página. Isso pode ser inadequado para um cartão reutilizável: a janela pode ter 1400px de largura enquanto a barra lateral oferece apenas 300px ao cartão. Uma consulta de tamanho do contêiner mede o espaço disponível de um ancestral, para que o cartão possa se adaptar ao espaço que realmente ocupa.

Declare um elemento envolvente e estilize seu conteúdo
<div class="card-wrap">
  <article class="card">...</article>
</div>
.card-wrap { container-type: inline-size; }
.card { display: grid; gap: 1rem; }

@container (min-width: 25rem) {
  .card { grid-template-columns: 8rem minmax(0, 1fr); }
}

Na escrita horizontal, inline-size é a largura. Ele declara que o elemento envolvente pode responder a consultas sobre a dimensão em linha. Com uma fonte de 16px no elemento raiz, 25rem equivale a 400px. Um cartão em um elemento envolvente de 300px permanece empilhado; outro em um de 500px coloca a imagem ao lado do texto. Ambos podem estar na mesma página ao mesmo tempo.

Uma consulta mede um ancestral do elemento que está sendo estilizado. Se você colocar container-type apenas em .card e depois tentar alterar esse mesmo cartão, a consulta ainda procurará acima dele. Use um elemento envolvente como caixa de medição e o cartão interno como caixa estilizada.

Selecione o ancestral pretendido

Uma consulta de tamanho sem nome usa o contêiner de tamanho ancestral adequado mais próximo. Em um layout aninhado, pode ser um elemento envolvente interno. Um nome permite escolher um ancestral específico:

.panel { container: sidebar / inline-size; }

@container sidebar (width >= 30rem) {
  .panel-title { font-size: 1.5rem; }
}

A forma abreviada define o nome e o tipo. Se não houver um ancestral adequado, a consulta não corresponderá; os estilos básicos continuarão sendo aplicados. As condições podem usar intervalos e operadores lógicos como and, or e not.

Garanta que o contêiner receba seu tamanho

A contenção impede que a dimensão consultada dependa do próprio conteúdo que a consulta pode reestilizar. Coloque container-type em uma caixa cuja largura venha do layout do elemento pai, como um bloco, uma área de grade ou um item flexível que cresce. Uma caixa que encolhe para se ajustar ao conteúdo pode colapsar quando seu conteúdo deixa de contribuir para sua dimensão em linha.

container-type: size oferece suporte a consultas de largura e altura, mas também aplica contenção ao dimensionamento em bloco. Sua altura precisa de um dimensionamento independente; caso contrário, pode colapsar. Para cartões comuns, inline-size permite que a altura continue acompanhando o conteúdo. O padrão normal não estabelece um contêiner para consultas de tamanho.

As características de tamanho incluem largura, altura, dimensão em linha, dimensão em bloco, proporção entre largura e altura e orientação, desde que o tipo de contêiner escolhido ofereça suporte às dimensões envolvidas. Os principais navegadores atuais oferecem suporte a consultas de tamanho. Mantenha um layout básico empilhado e utilizável para que o cartão ainda funcione se um navegador ignorar o aprimoramento.

Principais conclusões

  • Coloque container-type em um elemento envolvente ancestral.
  • Consultas inline-size são adequadas a cartões cuja altura deve acompanhar o conteúdo.
  • Uma consulta de contêiner estiliza descendentes, não sua própria caixa de medição.
  • Nomeie um contêiner quando ancestrais aninhados puderem mudar a referência pretendida.
  • Dê tamanho a um contêiner de consulta por meio do layout ao redor.

3.2 Escolha a referência de tamanho adequada à tarefa

Uma página responsiva pode combinar três abordagens: reorganização automática, condições da área de visualização e condições do componente. Decida de quais informações o layout precisa antes de escolher uma consulta.

NecessidadeFerramenta útilMotivo
Encaixar cartões repetidos em uma linhaGrade intrínseca ou flexbox com quebra de linhaOs itens podem se reorganizar sem uma regra de limite
Mudar a disposição da barra lateral da páginaConsulta de mídiaO espaço disponível na janela controla a página
Mudar um cartão em diferentes espaços da páginaConsulta de contêinerO cartão precisa do tamanho de seu elemento envolvente
Respeitar movimento reduzido ou saída para impressãoConsulta de mídiaEssas são condições do usuário ou da saída
Dimensione dentro de um contêiner

Unidades relativas ao contêiner de consulta descrevem porcentagens de um contêiner ancestral adequado. cqw e cqh usam largura e altura. cqi e cqb usam as dimensões em linha e em bloco. cqmin e cqmax usam a menor e a maior das duas dimensões. Na escrita horizontal, a dimensão em linha é a largura.

Em um contêiner adequado de 400px de largura, 5cqi equivale a 20px. Em um de 600px de largura, equivale a 30px. Isso permite que um título acompanhe seu próprio componente, mesmo quando a página inteira mantém a mesma largura.

Mantenha limites para o texto:

.card-wrap { container-type: inline-size; }
.card h2 {
  font-size: clamp(1rem, 4cqi, 1.5rem);
}

Com 16px no elemento raiz, um elemento envolvente de 300px produz um valor preferido de 12px, então o mínimo de 16px se aplica. Em 600px, 4cqi equivale a 24px, igual ao limite superior. Elementos envolventes mais largos não podem fazer o título ultrapassar 24px. Teste a ampliação e o redimensionamento do elemento envolvente; o texto fluido ainda precisa permanecer utilizável quando os leitores usam zoom.

As unidades relativas ao contêiner escolhem o ancestral adequado mais próximo para a direção medida. Se não existir um, elas usam como alternativa unidades da área de visualização pequena. Portanto, esquecer container-type pode fazer o texto mudar com a janela enquanto parece funcionar. Inspecione os ancestrais quando uma dimensão parecer acompanhar o espaço errado. Um nome de contêiner em uma consulta não redireciona, por si só, todas as unidades relativas ao contêiner para esse ancestral nomeado.

Combine as ferramentas

Uma página pode mudar para colunas de barra lateral e conteúdo principal em 48em por meio de uma consulta de mídia. Dentro da área principal, uma grade automática pode encaixar tantos cartões quanto o espaço permitir. A consulta de contêiner do próprio cartão pode mover sua imagem para o lado do texto apenas quando aquele espaço específico for largo o suficiente.

Não substitua uma consulta de movimento reduzido ou de passagem do ponteiro por uma consulta de contêiner. As dimensões de uma caixa não revelam as preferências do leitor nem seu dispositivo de entrada. Da mesma forma, copiar as regras de um cartão para consultas separadas da área de visualização em cada espaço da página vincula esse componente reutilizável a cada layout ao redor. Deixe que seu espaço local determine quando sua disposição muda.

Principais conclusões

  • Escolha a reorganização intrínseca quando não for necessário mudar a disposição.
  • Consultas de mídia lidam com condições da página inteira e preferências do usuário.
  • Consultas de contêiner lidam com o espaço disponível de um componente.
  • Unidades relativas ao contêiner usam um ancestral adequado para cada direção medida.
  • Sem um contêiner adequado, unidades relativas ao contêiner usam unidades da área de visualização pequena.
4

Forneça imagens e mídias adequadas a cada tela

Imagens precisam de uma caixa de exibição flexível e de um arquivo adequado para download. Preserve suas proporções, reserve espaço para o carregamento e decida quando um recorte é aceitável. Depois, descreva resoluções, recortes e formatos alternativos para que o navegador possa escolhê-los. Manter a marcação de imagens alinhada ao layout CSS preserva a nitidez da página em telas de alta densidade sem downloads desnecessários.

4.1 Mídias flexíveis sem distorção

Uma imagem pode ser mais larga que o espaço que o layout oferece a ela. Comece com uma regra que permita que ela encolha preservando suas proporções:

img, video {
  max-width: 100%;
  height: auto;
}

max-width limita a largura exibida à do contêiner sem forçar uma imagem pequena a preenchê-lo. width: 100% esticaria um logotipo pequeno até a largura total. A altura automática preserva a proporção entre largura e altura conforme a largura muda.

Reserve o espaço antes do download

Mantenha os atributos de dimensão no HTML:

<img src="coast.jpg" width="1200" height="800"
     alt="A rocky coast with a walking path">

Essas dimensões fornecem uma proporção de 3:2, para que o navegador possa reservar espaço antes de o arquivo chegar. Quando o CSS exibe a imagem com 360px de largura, a altura correspondente é 240px. Remover os atributos porque a imagem é responsiva faz perder essa informação antecipada de tamanho. O CSS ainda pode exibir a imagem menor que as dimensões dos atributos.

Para um reprodutor de vídeo incorporado, dê à caixa sua própria proporção:

iframe {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
}

Isso mantém a proporção 16:9 do reprodutor enquanto sua largura muda. Para texto, deixe a altura depender do conteúdo; uma proporção fixa é útil para caixas de mídia com formato conhecido.

Escolha se o recorte é permitido

Uma miniatura de cartão frequentemente precisa preencher uma caixa uniforme. Defina uma largura e uma proporção para ela e escolha como a imagem de origem se ajusta:

.thumbnail {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: top;
}

cover preenche a caixa e recorta as partes que se estendem para fora dela. contain mostra a imagem inteira e pode deixar faixas vazias. O padrão fill estica a imagem até preencher a caixa, o que pode distorcê-la. object-position escolhe o alinhamento usado no ajuste; neste exemplo, o alinhamento superior mantém a parte de cima visível.

ObjetivoConfiguração
Mostrar um diagrama inteiroobject-fit: contain
Preencher uma caixa de miniatura, aceitando um recorteobject-fit: cover
Preservar as proporções naturais ao encolherheight: auto com um limite de largura

Para uma comparação concreta, coloque uma foto de 400 × 200 em uma miniatura de 320 × 240. Cover a redimensiona para 480 × 240 e depois recorta 160px no total da largura redimensionada. Contain a redimensiona para 320 × 160, deixando 80px de altura não usada no total. Ambos preservam as proporções da imagem de origem; a escolha depende de a caixa precisar ser preenchida ou de a imagem inteira precisar permanecer visível.

Imagens que transmitem conteúdo devem estar em <img> com texto alternativo útil. Fundos CSS são adequados à decoração; background-size: cover pode recortá-los para preencher a caixa, e consultas de mídia podem trocar o arquivo de fundo.

Para imagens abaixo da primeira tela, loading="lazy" pode adiar a busca até o leitor se aproximar delas. Deixe a imagem principal inicial com carregamento imediato para que apareça rapidamente. Reduzir uma foto de 4000 pixels com CSS ainda exige o download dessa foto; é necessária marcação de imagens responsivas para escolher um arquivo menor.

Principais conclusões

  • Limite a largura da mídia e preserve sua proporção entre largura e altura.
  • Mantenha os atributos width e height para reservar espaço durante o carregamento.
  • cover recorta; contain mantém a imagem inteira visível.
  • Use img para conteúdo e fundos CSS para decoração.
  • Use carregamento tardio nas imagens mais abaixo, não na imagem principal inicial.
  • O tamanho de exibição em CSS não reduz o arquivo baixado.

4.2 Ofereça a resolução de imagem adequada

Uma foto pode ter vários arquivos com o mesmo conteúdo e as mesmas proporções, mas com dimensões em pixels diferentes. A alternância de resolução permite que o navegador escolha um arquivo com base no tamanho de exibição, na densidade da tela e em suas decisões de carregamento. Ela evita o consumo desnecessário de dados e mantém detalhes suficientes.

Tamanho de exibição fixo: descritores de densidade
<img src="logo-200.png"
     srcset="logo-200.png 1x, logo-400.png 2x"
     width="200" height="80" alt="Northwind Books">

O logotipo é exibido com 200 pixels CSS de largura. O arquivo de 200 pixels é adequado a uma tela com razão 1; o arquivo de 400 pixels fornece dois pixels de origem por pixel CSS exibido para a razão 2. Essa forma usa descritores x e não precisa do atributo sizes.

Tamanho de exibição variável: descritores de largura
<img src="park-800.jpg"
     srcset="park-480.jpg 480w,
             park-800.jpg 800w,
             park-1600.jpg 1600w"
     sizes="(min-width: 64em) 50vw, 100vw"
     width="1600" height="1000"
     alt="Trees around a park pond">

Cada valor w deve informar a largura real do arquivo em pixels. Ele não define uma largura CSS. O CSS ainda controla a caixa, e sizes descreve ao navegador a largura de exibição pretendida.

A primeira condição correspondente em sizes prevalece. Com o padrão de 16px do navegador, em 1024px ou mais o espaço da imagem é de 50vw; abaixo disso, é de 100vw. A última medida, sem condição, é a alternativa. As medidas podem usar unidades relativas à área de visualização, unidades de pixel ou de fonte e cálculos como calc(100vw - 2rem), mas não porcentagens. Quando sizes está ausente com descritores de largura, o navegador normalmente presume 100vw.

Calcule os detalhes necessários

Multiplique a largura de exibição informada pela razão de pixels do dispositivo. Para escolher o menor arquivo suficiente, compare esse valor com as larguras dos arquivos fornecidos:

  1. Uma área de visualização de 1200px com razão 1 usa o espaço de 50vw: 600 pixels CSS. O arquivo de 800w é o primeiro suficientemente grande.
  2. Uma área de visualização de 390px com razão 3 usa 390 pixels CSS. Ela precisa de 1170 pixels de origem, então 1600w atende ao valor necessário.
  3. A mesma área estreita com razão 2 precisa de 780 pixels de origem, o que 800w atende.

Navegadores reais podem reutilizar um arquivo maior em cache ou favorecer um menor em condições de carregamento limitadas. A marcação fornece opções e informações de tamanho, não uma ordem incondicional para buscar um arquivo exato.

Os navegadores começam a buscar imagens antes de o layout CSS completo estar disponível. Por isso, a indicação de tamanho deve ficar no HTML. Se o CSS der a uma imagem metade da área de visualização, mas sizes informar 100vw, o navegador poderá buscar um arquivo grande demais. Atualize sizes quando o layout mudar. Mantenha src como alternativa e use um único texto alt. Recortes diferentes precisam de <picture>, pois as opções comuns de resolução devem ser versões intercambiáveis da mesma imagem.

Principais conclusões

  • Use descritores x para um tamanho de exibição fixo e diferentes densidades.
  • Use descritores w para as larguras dos arquivos e sizes para o espaço pretendido.
  • A primeira condição correspondente em sizes prevalece; porcentagens não são medidas válidas para o espaço.
  • Estime a largura de origem a partir da largura de exibição e da razão de pixels do dispositivo.
  • Mantenha sizes consistente com o CSS; o navegador conserva a liberdade de escolha.

4.3 Escolha um recorte ou formato de imagem

Reduzir as dimensões em pixels de uma foto mantém a mesma composição. Às vezes, um celular precisa de uma composição diferente: uma foto ampla de um palco pode tornar a pessoa palestrando pequena demais para ser reconhecida. A direção de arte altera o recorte ou a imagem para que o assunto principal permaneça claro.

O elemento <picture> fornece opções de origem ordenadas, seguidas por um <img> obrigatório:

<picture>
  <source media="(min-width: 50em)"
          srcset="stage-wide.jpg" width="1600" height="900">
  <img src="stage-close.jpg" width="800" height="1000"
       alt="A speaker presenting on stage">
</picture>

Com o padrão de 16px, o recorte amplo é selecionado a partir de 800px; abaixo disso, a imagem usa o recorte mais fechado. O <img> continua sendo o elemento exibido. Ele fornece a alternativa e o texto alternativo, e é o elemento estilizado pelo seu CSS de imagem. Um <picture> sem <img> não exibe nenhuma imagem.

Coloque as condições mais específicas primeiro

O navegador escolhe a primeira origem compatível cujas condições correspondem. Suponha que você ofereça recortes em 30em e 60em. Liste primeiro o mínimo de 60em, depois o de 30em e, por fim, a alternativa. Se 30em vier primeiro, ele também corresponderá a uma tela muito larga e impedirá que o navegador chegue a 60em. Intervalos sem sobreposição também podem deixar clara a escolha pretendida.

A condição media de uma origem é uma instrução de seleção. Em comparação, as opções comuns de srcset e sizes fornecem informações para que o navegador escolha uma resolução adequada. Use direção de arte quando a composição precisar mudar; use alternância de resolução quando o conteúdo da imagem permanecer igual.

Ofereça formatos em ordem de preferência
<picture>
  <source type="image/avif" srcset="hall.avif">
  <source type="image/webp" srcset="hall.webp">
  <img src="hall.jpg" width="1200" height="800"
       alt="Rows of seats in a lecture hall">
</picture>

Um navegador que oferece suporte ao primeiro formato pode usá-lo; caso contrário, tenta a próxima opção compatível e, por fim, a alternativa JPEG. AVIF e WebP frequentemente produzem arquivos menores com qualidade visual comparável. O atributo type permite que o navegador ignore formatos incompatíveis sem baixá-los para descobrir.

Cada origem também pode oferecer várias opções de largura com seu próprio srcset e sizes. Isso combina um recorte ou formato escolhido com a alternância de resolução. Quando recortes definidos pela direção de arte têm proporções diferentes, atributos de dimensão nas origens permitem que o navegador reserve o espaço adequado para cada recorte.

Escreva o texto alternativo uma vez, em <img>, e garanta que ele descreva todos os recortes. Se um recorte fechado remover uma segunda pessoa, uma descrição alternativa que mencione duas pessoas deixará de ser adequada. Para uma imagem puramente decorativa, use alt="" para que ela não acrescente conteúdo falado desnecessário.

Principais conclusões

  • picture precisa de um img para exibição, alternativa e texto alt.
  • Use direção de arte quando a composição mudar.
  • A primeira origem compatível e correspondente prevalece, então a ordem das origens importa.
  • O type de um source pode oferecer um formato preferido com uma alternativa.
  • Todo recorte deve corresponder à única descrição alt.
5

Teste e aperfeiçoe páginas responsivas

Uma página pode parecer correta em uma captura de tela e ainda falhar com um título mais longo, texto maior ou outro dispositivo de entrada. Teste suas larguras e seus níveis de zoom, identifique caixas que transbordam e inspecione as imagens baixadas. Alvos de toque, preferências de movimento, temas de cores e saída para impressão completam as verificações que tornam o mesmo conteúdo utilizável em diferentes condições.

5.1 Encontre a largura em que a página falha

Uma página responsiva precisa ser testada em uma faixa de larguras, não apenas em alguns dispositivos conhecidos. Abra a visualização responsiva do navegador, defina uma área de visualização estreita, próxima de 320px, e arraste até uma janela larga. Observe títulos, navegação, cartões e bordas de imagens enquanto ajusta a largura. Teste imediatamente abaixo, no ponto e acima de cada ponto de quebra.

As ferramentas do desenvolvedor podem emular dimensões da área de visualização, razão de pixels do dispositivo e entrada por toque. Chrome e Edge oferecem uma barra de ferramentas de dispositivos; Firefox e Safari oferecem modos de design responsivo. A emulação é útil, mas dispositivos reais podem diferir no comportamento das barras de ferramentas, no toque, nas fontes e no desempenho. Verifique em um celular e um tablet reais nas duas orientações, além de uma janela de computador redimensionada.

Verifique o refluxo e o texto ampliado

O critério AA de refluxo das WCAG exige que conteúdo comum funcione em uma largura de 320 pixels CSS sem exigir rolagem em duas direções. Uma área de visualização de 1280px de largura com zoom de 400% fornece essa largura. Defina uma área responsiva de 320px para verificar diretamente a largura estreita e teste também o zoom real no computador para ver como a página é ampliada.

Conteúdo que precisa de um layout bidimensional, como uma tabela de dados, um mapa ou um diagrama, pode manter essa disposição. Mantenha qualquer rolagem lateral necessária dentro de sua própria região. Títulos, instruções e parágrafos ao redor ainda devem caber na largura da página.

Use conteúdo realista: um título longo, uma URL sem pontos de quebra, muitos links e texto traduzido mais extenso. Aumente também o tamanho padrão de fonte do navegador. Uma caixa que parecia espaçosa com um exemplo curto pode transbordar quando o texto cresce.

Identifique o transbordamento horizontal

Uma barra de rolagem lateral ou uma faixa vazia à direita frequentemente significa que uma caixa ultrapassa a área de visualização. Inspecione elementos suspeitos e compare as bordas de suas caixas com o limite da página. Contorne-os temporariamente:

* { outline: 1px solid red; }

Um contorno mostra as caixas sem aumentar sua largura medida. Procure larguras fixas, blocos de 100vw, imagens sem limite de largura, trilhas de grade com mínimos largos, margens negativas, textos longos e blocos de código.

Escolha a correção de acordo com a causa:

CausaCorreção útil
Largura rígida do conteúdoUse uma largura flexível com max-width ou min()
Imagem grande demaisLimite a largura e use altura automática
URL longa sem pontos de quebraUse overflow-wrap: anywhere
Bloco de código ou tabela larga necessáriaAdicione overflow-x: auto localmente
Trilha de grade com mínimo excessivoPermita um mínimo menor para a trilha

Não oculte o transbordamento horizontal da página inteira como atalho. body { overflow-x: hidden; } pode fazer a barra de rolagem desaparecer e deixar conteúdo fora do alcance do leitor.

Para uma tabela com rolagem local, teste a interação e a largura. Use o teclado para alcançar o elemento envolvente nomeado e verifique se sua rolagem horizontal revela todas as colunas. Depois, continue a tabulação até o próximo controle. A tabela pode exigir movimento lateral sem forçar o parágrafo acima ou o restante da página para a mesma área larga de rolagem.

Por fim, inspecione as requisições de imagens no painel Rede. Defina uma área de visualização do tamanho de um celular e uma razão de pixels do dispositivo alta e realista, recarregue nas condições de teste pretendidas e verifique a opção selecionada e o tamanho do arquivo. Uma imagem visualmente pequena ainda pode exigir um download grande se sua indicação sizes estiver errada.

Principais conclusões

  • Percorra diferentes larguras e teste os limites dos pontos de quebra.
  • Verifique o refluxo em 320 pixels CSS e o comportamento real do zoom.
  • Use dispositivos reais para verificar comportamentos que a emulação apenas aproxima.
  • Inspecione caixas que transbordam e corrija a causa específica.
  • Verifique conteúdo realista e os arquivos de imagem realmente baixados.

5.2 Mantenha as páginas utilizáveis com toque e configurações do leitor

A largura é apenas uma parte do comportamento responsivo. Um tablet largo pode usar toque; uma janela estreita de computador pode usar mouse. As páginas também precisam funcionar com zoom, texto maior, orientações diferentes e as configurações de movimento e cores preferidas pelo leitor.

Facilite o alcance dos controles

As orientações de tamanho de alvo das WCAG 2.2 AA exigem pelo menos 24 × 24 pixels CSS ou separação suficiente segundo a regra de espaçamento, com exceções como links dentro de frases. O critério de tamanho AAA usa 44 × 44 pixels CSS, também com exceções. Links de navegação maiores, com preenchimento interno, costumam ser mais confortáveis que uma linha densa de rótulos minúsculos.

Com 16px no elemento raiz, um link com texto de 16px, line-height: 1.5 e padding: 0.75rem 1rem tem uma caixa de linha de 24px mais 12px acima e abaixo: 48px de altura. Faça do próprio link a caixa clicável com preenchimento interno.

Informações essenciais não devem depender da passagem do ponteiro. Mantenha ações visíveis ou acessíveis por toque e foco do teclado. Adicione efeitos opcionais de passagem do ponteiro apenas quando a entrada principal oferecer suporte a eles:

@media (hover: hover) and (pointer: fine) {
  .card:hover { outline: 2px solid currentColor; }
}

pointer: coarse descreve uma entrada principal imprecisa, como um dedo. any-pointer e any-hover verificam se algum dispositivo de entrada conectado tem uma capacidade; eles não estabelecem que todo leitor a esteja usando.

Permita ampliação de texto e rotação

Mantenha o zoom habilitado e verifique a ampliação do texto para 200% sem perda de conteúdo ou funcionalidade. Use tamanhos relativos à fonte e caixas de texto que crescem. min-height permite que uma caixa cresça quando seu conteúdo cresce; uma altura fixa pode deixar o texto ampliado transbordar para a próxima seção.

Ofereça suporte às orientações retrato e paisagem, a menos que uma delas seja essencial à atividade. Celulares na orientação paisagem podem ter muito pouco espaço vertical. Uma consulta de altura como @media (max-height: 30em) pode permitir que um cabeçalho aderente saia da tela com a rolagem, para que não cubra o conteúdo.

Respeite preferências e saída

Use prefers-reduced-motion para evitar movimentos grandes para leitores que pedem menos movimento. Uma abordagem é colocar animações opcionais dentro de @media (prefers-reduced-motion: no-preference). Você também pode remover uma animação existente dentro de uma consulta reduce.

Para um tema escuro, combine cores legíveis de texto e fundo dentro de @media (prefers-color-scheme: dark). Verifique o contraste nos dois temas. color-scheme: light dark permite que controles e barras de rolagem desenhados pelo navegador acompanhem um tema adequado; ele não escolhe todas as cores da página para você.

Uma regra de movimento reduzido pode atingir apenas o componente animado:

@media (prefers-reduced-motion: reduce) {
  .banner { animation: none; }
}

Mantenha a própria mensagem disponível quando o movimento for removido. Para um tema escuro, altere as cores de primeiro plano e fundo juntas; mudar apenas uma delas pode fazer o texto se confundir com o que está ao redor. Visualize também os controles de formulário, pois os controles desenhados pelo navegador podem diferir das superfícies que você definiu.

Use @media print para ocultar a navegação e os botões e produzir texto escuro sobre branco. Links impressos podem mostrar seus destinos com a[href]::after { content: " (" attr(href) ")"; }. Teste uma prévia de impressão para verificar se o conteúdo, os fundos e as quebras de página continuam legíveis.

Principais conclusões

  • Dimensione o alvo clicável, incluindo seu preenchimento interno.
  • Use características de entrada para verificar a passagem do ponteiro e sua precisão.
  • Mantenha o conteúdo essencial disponível para usuários de toque e teclado.
  • Ofereça suporte a zoom, caixas de texto que crescem e ambas as orientações.
  • Respeite a preferência por movimento reduzido e teste os dois temas de cores.
  • Forneça estilos de impressão legíveis e destinos de links úteis.

Exercícios resolvidos de Design responsivo

5 Lições Interativas

1

Crie uma página de evento flexível

13 passos
Configure a área de visualização e escolha dimensões para uma página de evento que precisa caber em janelas estreitas e acomodar texto ampliado.
  1. 1
    IntroduçãoCrie uma página de evento flexível

    Uma página de evento tem texto minúsculo em um celular e uma caixa de conteúdo que ultrapassa a tela. Comece separando a largura de layout do navegador, definida pela viewport, do tamanho das caixas dentro dela. Depois, faça o elemento envolvente acompanhar o espaço disponível e escolha unidades de texto e altura com limites úteis, como clamp, para que nada quebre em janelas estreitas ou com texto ampliado. Você verificará cada mudança em relação a uma causa específica, em vez de mudar vários tamanhos sem relação de uma só vez.

  2. 2
    ExplicaçãoLeia a área de visualização em pixels CSS

    Uma tela de alta densidade não fornece largura extra para o layout CSS. Se um celular tem 1080 pixels do dispositivo na largura e razão de pixels do dispositivo 3, a largura correspondente é de 360 pixels CSS. Uma consulta de mídia e uma unidade de largura da área de visualização usam essa largura CSS. Os pontos físicos fornecem detalhes mais finos para desenhar textos e imagens; eles não transformam uma página estreita em um layout de computador.

  3. 3
    ExemploCorrija o layout virtual largo

    A página de evento não tem instrução para a área de visualização, então o navegador móvel pode organizá-la em uma área virtual larga e reduzir o resultado. Coloque isto no cabeçalho do documento:

    <meta name="viewport" content="width=device-width, initial-scale=1">
    

    Recarregue a prévia estreita. A página agora usa a largura do dispositivo em pixels CSS e começa na escala normal. Mantenha o zoom habilitado para leitores que precisam de texto maior.

  4. 4
    DesafioExplique a rolagem lateral que permanece

    Depois da mudança na área de visualização, o texto parece normal, mas o elemento envolvente do evento ainda tem width: 900px em uma área de visualização de 360px. Por que ainda há rolagem lateral?

    ---reveal---

    A tag mudou a área de visualização inicial do layout do navegador, não a largura CSS do elemento envolvente. Uma caixa de 900px ainda ultrapassa 360px. Torne o elemento envolvente fluido com um limite superior para que ele possa encolher até o espaço que a página realmente tem.

  5. 5
    ExemploPermita que o elemento envolvente encolha

    Substitua a largura fixa do elemento envolvente por uma caixa de largura total com um limite:

    .event {
      box-sizing: border-box;
      width: 100%;
      max-width: 68rem;
      padding-inline: 1rem;
      margin-inline: auto;
    }
    

    O elemento envolvente acompanha um elemento pai estreito, mas para de crescer em uma tela larga. Border-box inclui o preenchimento interno na largura declarada, enquanto as margens automáticas na direção em linha centralizam a caixa limitada.

  6. 6
    ExplicaçãoEscolha uma referência para texto e espaçamento

    Deixe a fonte do elemento raiz no padrão do leitor. Um rótulo de 1.25rem passa a ter 20px com 16px no elemento raiz e 25px com 20px no elemento raiz. Para o preenchimento interno de um botão, em pode ser mais útil: padding: 0.5em 1em acompanha o tamanho do texto do próprio botão. Na própria propriedade font-size, porém, em acompanha o elemento pai. Essa diferença explica por que regras de fonte em em aninhadas podem se acumular.

  7. 7
    DicaLimite a largura do parágrafo com base na fonte

    A descrição do evento não deve se estender em uma linha muito longa em uma tela larga. Adicione max-width: 62ch à sua área de leitura. Um ch mede a largura do dígito “0” da fonte, então o resultado é um limite útil baseado na fonte, não uma garantia de exatamente 62 caracteres por linha. Verifique a fonte e o texto reais; janelas estreitas ainda farão o parágrafo quebrar antes de atingir esse limite.

  8. 8
    DesafioMantenha as proporções de um botão

    A fonte de um botão aumenta de 16px para 24px. Seu preenchimento interno horizontal é 0.75em. O que acontece com o preenchimento de cada lado e por quê?

    ---reveal---

    Ele aumenta de 12px para 18px porque em no preenchimento interno acompanha o tamanho de fonte do próprio botão. Isso permite que o espaço ao redor cresça com o rótulo. Um valor de preenchimento em rem acompanharia a fonte do elemento raiz e não necessariamente mudaria com esse aumento local da fonte.

  9. 9
    ExplicaçãoAjuste uma seção inicial alta

    A seção inicial do evento deve preencher a tela de um celular sem prender um texto mais longo em uma caixa de altura fixa. Use min-height: 100svh. A área de visualização pequena representa o estado com as barras de ferramentas do navegador visíveis; min-height permite que a seção cresça além desse tamanho inicial. A unidade vh acompanha a área de visualização grande, enquanto dvh acompanha as mudanças nas barras de ferramentas e pode fazer a seção mudar de tamanho durante a rolagem.

  10. 10
    ExemploDefina um tamanho de título com limites

    Para o título do evento, experimente:

    .event h1 {
      font-size: clamp(1.5rem, 1rem + 2vw, 2.5rem);
    }
    

    Com 16px no elemento raiz, os limites são 24px e 40px. Em uma área de visualização de 600px, o valor preferido é 16px mais 12px, resultando em 28px. Como 28px está dentro dos limites, o navegador o usa. Isso produz uma mudança gradual sem uma consulta separada para cada tamanho.

  11. 11
    ExemploAplique os limites nas duas extremidades

    Mantenha a mesma expressão para o título e 16px no elemento raiz. Em 300px de largura, o valor preferido é 16px mais 6px, ou 22px, então o limite inferior de 24px se aplica. Em 1600px de largura, ele seria 48px, então o limite superior de 40px se aplica. A expressão do meio sugere um tamanho; clamp decide se essa sugestão está dentro do intervalo permitido. A função não ajusta os três argumentos juntos.

  12. 12
    DesafioEscolha unidades e verifique a ampliação

    O elemento envolvente da página de evento cabe na tela, mas seu título usa apenas 6vw e quase não aumenta durante o zoom no computador. O que você deve mudar e depois testar?

    ---reveal---

    Use uma parcela relativa à fonte e limites adequados em vez de dimensionamento puramente relativo à área de visualização; depois, teste a ampliação real do texto. O zoom estreita a área de visualização em pixels CSS, reduzindo um tamanho de fonte definido apenas em vw. Mesmo uma expressão mista de rem/vw precisa de uma verificação com zoom para confirmar que os leitores conseguem ampliar o texto suficientemente.

  13. 13
    RecapitulaçãoVerifique a base flexível

    Verifique três referências antes de adicionar mudanças de layout: a área de visualização móvel usa a largura do dispositivo, o elemento envolvente acompanha seu elemento pai e os tamanhos de texto respeitam uma referência de fonte. Limite valores fluidos onde necessário e permita que caixas de texto cresçam. Experimente uma janela estreita, uma janela larga e texto ampliado antes de passar para colunas adicionais.

2

Transforme uma lista de cartões em um layout adaptável

14 passos
Comece com uma pilha estreita, adicione pontos de quebra úteis e compare colunas explícitas e automáticas.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoTransforme uma lista de cartões em um layout adaptável
  2. 2
    ExplicaçãoTorne uma condição de largura fácil de ler
  3. 3
    ExemploCombine condições com o significado correto
  4. 4
    DesafioEncontre uma lacuna entre limites
  5. 5
    ExemploEscreva primeiro o layout estreito
  6. 6
    ExemploAdicione duas colunas quando houver espaço
  7. 7
    DesafioMantenha a mudança para larguras maiores no controle
  8. 8
    ExplicaçãoDeixe a grade encaixar colunas automaticamente
  9. 9
    ExemploConte trilhas e espaçamentos juntos
  10. 10
    Ideia-chaveEscolha como o espaço vazio se comporta
  11. 11
    DesafioMantenha a grade estreita utilizável
  12. 12
    DicaPreserve a ordem de leitura
  13. 13
    DesafioCombine o comportamento da página e dos componentes
  14. 14
    RecapitulaçãoVerifique cada transição
3

Reutilize um cartão em diferentes espaços da página

10 passos
Configure um elemento envolvente para consulta local e combine unidades relativas ao contêiner com condições da página.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoReutilize um cartão em diferentes espaços da página
  2. 2
    ExemploCrie o ancestral de medição
  3. 3
    ExemploAltere o cartão dentro do elemento envolvente
  4. 4
    DesafioCorrija uma consulta ao próprio elemento
  5. 5
    DicaNomeie a caixa de medição pretendida
  6. 6
    ExplicaçãoTorne fluido um título local
  7. 7
    DesafioEncontre a referência inesperada
  8. 8
    ConexãoSepare decisões da página e de preferências
  9. 9
    DesafioEscolha condições para um cartão reutilizável
  10. 10
    RecapitulaçãoInspecione a caixa de referência
4

Forneça uma imagem nítida sem um download grande

15 passos
Torne uma imagem flexível, preveja uma opção de resolução e adicione uma escolha de recorte ou formato quando necessário.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoForneça uma imagem nítida sem um download grande
  2. 2
    ExemploMantenha a foto dentro de sua coluna
  3. 3
    ExplicaçãoEscolha o que pode ser recortado
  4. 4
    DesafioSepare o tamanho de exibição do tamanho do arquivo
  5. 5
    ExemploOfereça as larguras reais dos arquivos
  6. 6
    ExemploLeia o espaço antes de escolher um arquivo
  7. 7
    DicaMantenha sizes e CSS alinhados
  8. 8
    DesafioEscolha a resolução necessária
  9. 9
    ConexãoUse descritores de densidade para o logotipo fixo
  10. 10
    ExplicaçãoDecida se o recorte precisa mudar
  11. 11
    ExemploColoque o recorte amplo antes da alternativa
  12. 12
    DesafioCorrija a ordem dos recortes
  13. 13
    ExplicaçãoOfereça formatos sem mudar o assunto
  14. 14
    DesafioConclua o plano de imagens da oficina
  15. 15
    RecapitulaçãoVerifique a caixa e a requisição
5

Teste uma página além da prévia organizada

12 passos
Identifique transbordamentos e teste refluxo, capacidades de entrada, tamanho do texto e preferências do leitor.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoTeste uma página além da prévia organizada
  2. 2
    ExemploPercorra as larguras do layout
  3. 3
    ExplicaçãoVerifique a largura de leitura com zoom
  4. 4
    ExemploEncontre a caixa que ultrapassa a borda
  5. 5
    DesafioMantenha acessível uma região larga necessária
  6. 6
    ExemploTorne o próprio link grande o suficiente
  7. 7
    Ideia-chaveNão deduza a entrada pela largura
  8. 8
    DesafioCorrija um painel para texto ampliado
  9. 9
    ExplicaçãoTeste movimento, temas e impressão
  10. 10
    DicaInspecione os downloads nas condições pretendidas
  11. 11
    DesafioPlaneje uma verificação final de usabilidade
  12. 12
    RecapitulaçãoRepita a condição que revelou a falha

Questões de Design responsivo

40 Questões de Prática em 4 conjuntos

Conjunto 1: Pontos de quebra, contêineres e controles utilizáveis10 Questões de Prática

Questão 1 de 10

Um tablet grande usa principalmente toque e informa hover: none e pointer: coarse. Como os detalhes essenciais de um cartão devem ser disponibilizados?
  1. Mostrá-los apenas com a passagem do ponteiro porque a área de visualização do tablet é larga.
  2. Mostrá-los apenas quando o tablet estiver na orientação paisagem.
  3. Mantê-los visíveis ou acessíveis por toque e foco do teclado.
  4. Mantê-los ocultos até que uma consulta any-pointer: fine corresponda.
Mostrar respostaOcultar resposta
Resposta: C
Detalhes essenciais devem permanecer disponíveis sem passagem do ponteiro, inclusive por toque e teclado. Uma área de visualização grande não cria uma entrada principal capaz de passar o ponteiro. Mesmo um ponteiro preciso conectado não justificaria tornar conteúdo essencial indisponível para alguém que usa toque.

Questão 2 de 10

Uma imagem de 1500 × 1000 tem atributos de dimensão HTML correspondentes e o CSS max-width: 100%; height: auto. Seu contêiner tem 450px de largura. Quais dimensões de exibição preservam suas proporções?
  1. 450 × 1000 pixels CSS
  2. 450 × 300 pixels CSS
  3. 1500 × 1000 pixels CSS
  4. 450 × 450 pixels CSS
Mostrar respostaOcultar resposta
Resposta: B
A largura diminui de 1500px para 450px, uma escala de 0,3, então a altura de 1000px passa a ser 300px. Manter a altura de 1000px do atributo como altura exibida distorceria a imagem; height: auto mantém sua proporção entre largura e altura.

Questão 3 de 10

Em 320px, uma página contém um parágrafo legível com uma URL longa e uma tabela de resultados que é de fato bidimensional. A URL e a tabela alargam a página inteira. Qual correção preserva o acesso a ambas?
  1. Ocultar o transbordamento horizontal da página e manter as duas caixas nas larguras atuais.
  2. Dar ao parágrafo e à tabela larguras fixas de 320px e ocultar seu transbordamento.
  3. Colocar a página inteira em uma região de rolagem horizontal e preservar o layout largo.
  4. Permitir quebras na URL e colocar a tabela em um elemento com rolagem nomeado e alcançável pelo teclado.
Mostrar respostaOcultar resposta
Resposta: D
A URL pode quebrar dentro do parágrafo, enquanto a tabela pode manter sua estrutura necessária em uma região de rolagem local. Isso permite que o conteúdo ao redor se reorganize em 320px. Ocultar o transbordamento do body remove o acesso ao conteúdo excedente sem corrigir nenhuma das causas.

Questão 4 de 10

Um título usa 5cqi dentro de um contêiner adequado de 460px de largura, na escrita horizontal. A área de visualização tem 1380px de largura. Qual é seu tamanho de fonte computado antes de quaisquer outros limites?
  1. 23px
  2. 69px
  3. 46px
  4. 13,8px
Mostrar respostaOcultar resposta
Resposta: A
Um cqi é 1% da dimensão em linha do contêiner adequado, então 5% de 460px resultam em 23px. Usar 69px corresponde a calcular 5% da área de visualização e ignora a referência local ao componente que torna as unidades de contêiner úteis.

Questão 5 de 10

Uma área de visualização pode ter 679,5px de largura durante o zoom. Qual combinação de limites atribui cada largura a exatamente um de dois layouts baseados na largura?
  1. Use (max-width: 679px) e (min-width: 680px).
  2. Use (width < 680px) e (width >= 680px).
  3. Use (max-width: 680px) e (min-width: 680px).
  4. Use (width <= 680px) e (width > 681px).
Mostrar respostaOcultar resposta
Resposta: B
As comparações complementares cobrem larguras abaixo de 680px e larguras iguais ou superiores a esse valor, sem sobreposição. A combinação de 679px e 680px deixa 679,5px sem cobertura. Condições inclusivas de máximo e mínimo no mesmo número corresponderiam ambas nesse limite.

Questão 6 de 10

Uma linha de navegação quebra de forma inadequada em algumas larguras. O que deve determinar onde seu layout muda?
  1. A largura de celular mais comum em uma lista de configurações predefinidas.
  2. A largura na qual todas as imagens da página terminam de baixar.
  3. A quantidade de pixels físicos indicada nas especificações da tela.
  4. A largura na qual os links reais precisam de uma disposição diferente.
Mostrar respostaOcultar resposta
Resposta: D
Um ponto de quebra baseado no conteúdo surge do teste dos rótulos e controles reais conforme o espaço disponível muda. Uma configuração predefinida de dispositivo pode ajudar a testar uma página, mas não representa todas as larguras de janela, preferências de fonte ou rótulos mais longos que a navegação precisa comportar.

Questão 7 de 10

Uma grade usa repeat(auto-fit, minmax(14rem, 1fr)) com um espaçamento de 1rem. O elemento raiz tem 16px, há muitos itens e a largura do conteúdo é 920px. Quantas colunas cabem?
  1. Duas colunas
  2. Três colunas
  3. Quatro colunas
  4. Cinco colunas
Mostrar respostaOcultar resposta
Resposta: B
Cada mínimo é 224px e cada espaçamento é 16px. Quatro colunas precisariam de 944px, então apenas três cabem em 920px. Dividir 920 por 224 sem somar os espaçamentos sugere quatro, mas eles fazem parte da largura que a grade precisa acomodar.

Questão 8 de 10

Uma grade de cartões pode ser colocada em uma barra lateral de 190px ou em uma área principal de 1000px. Ela usa repeat(auto-fit, minmax(16rem, 1fr)). Com 16px no elemento raiz, a grade transborda na barra lateral, e dois cartões na área principal devem se expandir pela linha. Qual regra de trilha atende às duas necessidades?
  1. repeat(auto-fit, minmax(min(16rem, 100%), 1fr))
  2. repeat(auto-fill, minmax(16rem, 1fr))
  3. repeat(auto-fit, minmax(16rem, 16rem))
  4. repeat(auto-fill, minmax(min(16rem, 100%), 1fr))
Mostrar respostaOcultar resposta
Resposta: A
O min() interno permite que uma trilha única encolha abaixo de 256px para caber na barra lateral. Manter auto-fit recolhe trilhas vazias na área principal para que dois cartões possam se expandir. Mudar para auto-fill com um mínimo flexível corrige a barra lateral, mas mantém trilhas vazias na área larga.

Questão 9 de 10

Qual declaração no elemento envolvente permite consultas de contêiner por largura e deixa a altura acompanhar o conteúdo na escrita horizontal?
  1. container-type: normal
  2. container-type: size
  3. container-type: inline-size
  4. container-name: inline-size
Mostrar respostaOcultar resposta
Resposta: C
O tipo inline-size disponibiliza a largura para consultas de tamanho e mantém a altura baseada no conteúdo. O tipo size também aplica contenção à dimensão em bloco, então não é a escolha adequada quando a altura do elemento envolvente deve continuar vindo de seu conteúdo.

Questão 10 de 10

Um cartão tem container-type: inline-size. Dentro de @container (width >= 24rem), .card muda para duas colunas, mas isso nunca acontece. Não há contêiner ancestral adequado, e o cartão está em um espaço flexível que encolhe. Qual correção faz a consulta funcionar de modo confiável?
  1. Manter o tipo no cartão e adicionar um nome de contêiner à consulta.
  2. Colocar o tipo no cartão e mudar a consulta para max-width.
  3. Colocar o tipo em um elemento envolvente que cresce e consultar o cartão interno.
  4. Colocar o tipo em um elemento envolvente em linha cuja largura vem apenas do conteúdo.
Mostrar respostaOcultar resposta
Resposta: C
O cartão estilizado precisa de um ancestral adequado, então seu próprio tipo de contêiner não pode fornecer a consulta. Um elemento envolvente que recebe largura do layout flexível fornece esse ancestral e evita o colapso de uma caixa que encolhe para se ajustar ao conteúdo. Nomear o cartão não elimina a exigência de um ancestral.
Conjunto 2: Fundamentos de área de visualização, dimensionamento e layout10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um navegador tem tamanho inicial de fonte de 20px. A folha de estilo define html { font-size: 12px; }. Em qual largura da área de visualização (min-width: 36em) começa a corresponder?
  1. 432px
  2. 576px
  3. 720px
  4. 864px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma tela tem 824 pixels do dispositivo na largura e uma razão de pixels do dispositivo de 2. Qual largura o CSS usa para sua área de visualização de layout quando a tag da área de visualização solicita a largura do dispositivo?
  1. 824 pixels CSS
  2. 1648 pixels CSS
  3. 412 pixels CSS
  4. 206 pixels CSS
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma página móvel aparece como um layout de computador minúsculo. Seu cabeçalho não tem a tag meta da área de visualização, e sua caixa principal tem width: 880px. Qual par de mudanças resolve as duas causas?
  1. Adicionar a tag com a largura do dispositivo; dar uma largura fluida à caixa principal.
  2. Adicionar a tag com a largura do dispositivo; manter a caixa principal em 880px.
  3. Manter a área de visualização atual; dar uma largura fluida à caixa principal.
  4. Definir maximum-scale como 1; dar uma largura fluida à caixa principal.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um painel tem width: 60% em um bloco de referência de 450px de largura. O painel não tem preenchimento interno nem borda. Qual é sua largura?
  1. 180px
  2. 450px
  3. 750px
  4. 270px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

A fonte do elemento raiz é 18px. Um botão herda uma fonte de 20px de seu elemento pai, define font-size: 1.25em e tem padding-inline: 0.8em. Qual é seu preenchimento interno horizontal em cada lado?
  1. 16px
  2. 20px
  3. 18px
  4. 14,4px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Uma seção principal de destaque deve ter pelo menos a altura da área de visualização móvel pequena e crescer se seu texto precisar de mais altura. Qual declaração é adequada?
  1. height: 100svh
  2. min-height: 100svh
  3. min-height: 100lvh
  4. height: 100dvh
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

A fonte do elemento raiz é 18px e a área de visualização tem 900px de largura. Qual tamanho de fonte resulta de clamp(1rem, 1rem + 1vw, 1.4rem)?
  1. 25,2px
  2. 27px
  3. 18px
  4. 32,4px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Com uma área de visualização de exatamente 760px de largura, (min-width: 760px) corresponde?
  1. Não, porque a largura deve ser maior que 760px.
  2. Só se uma condição max-width também estiver presente.
  3. Só se a folha de estilo definir o tamanho do elemento raiz em pixels.
  4. Sim, porque seu limite mínimo está incluído.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma grade básica tem uma coluna. Uma consulta de 62em define três colunas, seguida mais adiante por uma consulta de 42em que define duas. Ambas usam .items com a mesma especificidade na mesma camada. O que aparece em 70em?
  1. Três colunas, porque o limite maior tem maior especificidade.
  2. Uma coluna, porque consultas de largura mínima sobrepostas se anulam.
  3. Três colunas, porque o navegador ordena as consultas pelo valor do limite.
  4. Duas colunas, porque ambas as consultas correspondem e a regra posterior prevalece.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Quatro cartões flexíveis se distribuem em uma linha completa de três e uma última linha com um cartão. Cada um tem flex: 1 1 14rem. Por que o último cartão pode ser mais largo?
  1. O último cartão herda um tamanho de fonte maior do elemento raiz.
  2. A quebra de linha flexível preserva colunas vazias na última linha.
  3. Cada linha flexível distribui sua própria largura restante.
  4. O último cartão ignora a largura declarada do contêiner.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Arquivos de imagem, recortes e caixas de exibição10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

As imagens de uma página parecem pequenas em celulares, mas ainda baixam arquivos enormes. Elas já têm max-width: 100%; height: auto. Qual mudança adicional resolve o tamanho do download?
  1. Reduzir o max-width do CSS de 100% para 80%.
  2. Remover os atributos HTML width e height.
  3. Oferecer arquivos menores por meio de marcação de imagens responsivas.
  4. Definir object-fit como contain em todas as imagens.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma imagem é exibida com 340 pixels CSS em uma tela com razão 2. As opções são 400w, 700w e 1400w. Considere que o navegador seleciona a menor opção que atende à densidade necessária, sem ajuste de cache ou rede. Qual largura de arquivo é selecionada?
  1. 400 pixels
  2. 680 pixels
  3. 1400 pixels
  4. 700 pixels
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

O padrão do navegador é 16px. Uma imagem tem sizes="(min-width: 54em) 40vw, 100vw" e opções de 600w, 1000w e 1800w. Em uma área de visualização de 1000px e com razão 2, considere que a menor opção que atende à densidade necessária é escolhida. Qual largura de arquivo resulta dessa escolha?
  1. 600 pixels
  2. 1000 pixels
  3. 1800 pixels
  4. 800 pixels
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

O CSS dá a uma foto um espaço de 48vw, mas sua marcação com descritores de largura informa sizes="100vw". Qual é o provável problema de carregamento?
  1. O navegador deve exibir a foto em 100vw apesar do CSS.
  2. O navegador deve rejeitar todas as opções com descritores de largura.
  3. O navegador pode escolher uma opção desnecessariamente grande.
  4. O navegador pode recortar a foto para metade de sua composição.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um diagrama precisa caber em uma miniatura retangular fixa sem perder nenhuma parte de seu conteúdo. Qual valor de object-fit é adequado?
  1. contain
  2. cover
  3. fill
  4. none
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

O padrão é 16px. Uma imagem usa sizes="(min-width: 38em) 100vw, (min-width: 66em) 45vw, 100vw". Em 1152px e com razão 2, as opções são 640w, 1280w e 2560w. Pela regra de seleção do menor arquivo suficiente, o que acontece?
  1. A primeira condição prevalece e seleciona a opção de 2560w.
  2. O maior limite correspondente prevalece e seleciona a opção de 1280w.
  3. A primeira condição prevalece e seleciona a opção de 1280w.
  4. A alternativa final prevalece e seleciona a opção de 2560w.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Dentro de um elemento picture, onde o texto alternativo deve ser escrito?
  1. Em cada elemento source.
  2. No próprio elemento picture.
  3. Apenas no primeiro source correspondente.
  4. No elemento img obrigatório.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

O padrão do navegador é 16px. Um picture oferece primeiro um source com largura mínima de 34em, opções de 600w/1200w e sizes="50vw", depois um source de 68em com opções de 1600w/2400w e sizes="100vw" e, por fim, img. Ambos os formatos são compatíveis. Em 1152px e com razão 2, quais source e arquivo resultam da seleção do menor arquivo suficiente?
  1. O segundo source e seu arquivo de 2400w.
  2. O primeiro source e seu arquivo de 1200w.
  3. O primeiro source e seu arquivo de 600w.
  4. O segundo source e seu arquivo de 1600w.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um picture oferece AVIF, depois WebP e depois um img JPEG. Não há condições de mídia. Um navegador oferece suporte a WebP e JPEG, mas não a AVIF. O que ele seleciona?
  1. O src do img JPEG.
  2. O source WebP.
  3. O source AVIF.
  4. WebP e JPEG.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Após aumentar a largura de uma janela de teste, uma imagem responsiva grande fica em cache. Ao estreitar a janela, esse arquivo continua em uso. Qual é a conclusão fundamentada?
  1. O navegador necessariamente ignorou todas as condições de sizes.
  2. Uma imagem com descritores de largura não pode se adaptar após o redimensionamento.
  3. A largura CSS da imagem ainda deve ser igual à da área de visualização mais larga.
  4. Uma opção maior em cache pode ser reutilizada; teste novamente com o cache controlado.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Diagnostique páginas responsivas em diferentes condições10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um elemento envolvente content-box tem width: 100% dentro de um elemento pai de 370px e 20px de preenchimento interno à esquerda e à direita, sem borda. Qual mudança faz o elemento envolvente caber no elemento pai mantendo esse preenchimento?
  1. Manter o dimensionamento content-box porque sua largura total já é 370px.
  2. Usar o dimensionamento border-box para que a largura total passe a ser 410px.
  3. Manter content-box e adicionar margens automáticas em linha para remover o transbordamento.
  4. Usar o dimensionamento border-box para que a largura total seja 370px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma barra lateral tem 240px de largura dentro de uma área de visualização de 1440px. Seu painel de texto usa width: 30vw; height: 8rem. Quando o texto é ampliado, ele se sobrepõe ao painel seguinte. Qual correção resolve as duas falhas visíveis?
  1. Manter a largura relativa à área de visualização e substituir height por min-height.
  2. Usar uma largura relativa ao elemento pai e manter a altura fixa de 8rem.
  3. Usar uma largura relativa ao elemento pai e deixar a altura do painel crescer com o conteúdo.
  4. Usar uma largura menor relativa à área de visualização e ocultar todo o transbordamento do painel.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Estas regras estão em uma camada e têm a mesma especificidade. Qual tamanho de fonte se aplica em uma área de visualização de 900px?

@media (min-width: 700px) { .title { font-size: 2rem; } }
.title { font-size: 1.2rem; }
  1. 1,2rem
  2. 2rem
  3. 3,2rem
  4. O tamanho inicial de fonte do navegador.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

O padrão do navegador e o elemento raiz são 16px. Em uma área de visualização de 928px, um elemento envolvente de página tem 540px de largura. Uma consulta de 52em dá a ele uma barra lateral de 18rem, um espaçamento de 1rem e uma coluna principal minmax(0, 1fr). A grade principal usa repeat(auto-fit, minmax(16rem, 1fr)), e uma URL de cartão mede 620px sem quebra, com overflow-wrap: normal. Quais duas alterações permitem que o conteúdo principal caiba sem mudar a barra lateral?
  1. Mover o ponto de quebra da barra lateral para uma largura maior e manter as regras rígidas da trilha e da URL.
  2. Permitir um mínimo de trilha que possa encolher e a quebra dentro do texto da URL.
  3. Ocultar o transbordamento do body e manter as regras rígidas da trilha e da URL.
  4. Permitir um mínimo de trilha que possa encolher, mas manter o texto da URL sem possibilidade de quebra.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

O elemento raiz tem 16px. Um elemento envolvente de 520px chamado panel contém um contêiner inline-size de 280px, que contém um cartão. Ambos os ancestrais são adequados. Uma consulta sem nome de 26rem estiliza o cartão. O que acontece e como ela pode usar deliberadamente a largura externa?
  1. Ela já corresponde; consultas sem nome sempre usam o ancestral mais largo.
  2. Ela permanece falsa; nomeie o contêiner interno como panel e mantenha seus 280px de largura.
  3. Ela já corresponde; 26rem é calculado a partir dos 280px de largura do cartão.
  4. Ela permanece falsa; nomeie a consulta como panel para que meça o ancestral de 520px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um bloco reutilizável de produto aparece nas duas colunas da página. Ele deve mudar o posicionamento da imagem conforme seu próprio espaço, enquanto uma animação grande deve respeitar a preferência por movimento reduzido. Qual solução atribui cada decisão à condição correta?
  1. Usar uma consulta de largura da área de visualização para o posicionamento e uma consulta de contêiner para o movimento.
  2. Usar uma consulta de largura da área de visualização para o posicionamento e o movimento reduzido.
  3. Usar uma consulta de tamanho do contêiner para o posicionamento e uma consulta de mídia de movimento para a animação.
  4. Usar uma consulta de largura do contêiner para o posicionamento e o movimento reduzido.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma foto preenche um elemento envolvente cujo bloco de referência ocupa uma área de visualização de 1440px. O elemento envolvente tem width: 100%; max-width: 48rem, sem preenchimento interno, e o elemento raiz tem 16px. A indicação da imagem é sizes="50vw"; a razão é 2 e as opções são 800w, 1500w e 2000w. Pela seleção do menor arquivo suficiente, qual correção e escolha de arquivo correspondem ao espaço real?
  1. Manter a indicação de espaço de 720px; o espaço real precisa apenas do arquivo de 1500w.
  2. Usar uma indicação de espaço de 768px nessa largura; o valor necessário exige o arquivo de 2000w.
  3. Usar uma indicação de espaço de 768px nessa largura; o valor necessário exige o arquivo de 1500w.
  4. Usar uma indicação de espaço de 1440px nessa largura; o valor necessário exige o arquivo de 2000w.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um recorte amplo mostra dois ciclistas, mas o recorte para celular mostra apenas um. O img tem o texto alt “Dois ciclistas atravessando uma ponte.” O que deve ser alterado?
  1. Fazer os recortes e a descrição alt compartilhada concordarem sobre o assunto visível.
  2. Dar ao source para celular seu próprio alt e manter a descrição do img.
  3. Mover o texto alt existente do img para o elemento picture.
  4. Remover o img obrigatório e deixar cada source exibir seu próprio texto alt.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma área de visualização de layout de 1440px é ampliada com zoom para 300%. Qual é sua largura resultante aproximada em pixels CSS?
  1. 4320 pixels CSS
  2. 1140 pixels CSS
  3. 480 pixels CSS
  4. 720 pixels CSS
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Em uma tela sensível ao toque, baixa e na orientação paisagem, um cabeçalho aderente cobre grande parte da página e detalhes essenciais do menu aparecem apenas com a passagem do ponteiro. Um leitor também pediu movimento reduzido. Qual plano atende às três condições?
  1. Usar uma condição de largura estreita para reduzir o cabeçalho, adicionar passagem do ponteiro e interromper o movimento.
  2. Usar condições de altura, entrada e movimento para suas respectivas adaptações.
  3. Usar uma consulta de contêiner para reduzir o cabeçalho e deduzir as preferências de ponteiro e movimento.
  4. Usar condições de altura e passagem do ponteiro e habilitar a animação sempre que a área de visualização for larga.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

74 Termos-Chave, cada um com sua definição

Á

Área de visualização
A área de visualização é a área do navegador em que a página é exibida, excluindo as próprias barras de ferramentas e os controles ao redor do navegador.
Girar um celular altera as dimensões da área de visualização e pode acionar regras de layout diferentes.

A

Ajuste do conteúdo do objeto
O ajuste do conteúdo do objeto controla como o conteúdo de uma imagem se encaixa em uma caixa de imagem dimensionada, permitindo recorte proporcional, faixas vazias ou esticamento.
object-fit: contain preserva todas as partes de um diagrama dentro de uma caixa uniforme de miniatura.
Alternância de resolução
A alternância de resolução oferece versões da mesma imagem em diferentes tamanhos em pixels para que o navegador possa escolher detalhes adequados à exibição.
Uma tela com razão 2 pode receber um arquivo maior sem mudar o recorte da foto ou sua caixa CSS.
Alvo de toque
Um alvo de toque é a área clicável ou acionável por toque de um controle, incluindo seu preenchimento interno ativo, que precisa de tamanho ou separação suficientes para o uso.
Adicionar preenchimento interno ao próprio link cria um alvo maior do que adicionar espaço não clicável ao redor de seu texto.
Ampliação do texto
A ampliação do texto aumenta o tamanho do texto legível preservando conteúdo e controles; as WCAG exigem suporte até 200% sem perda.
Um painel cuja altura pode crescer mantém toda a explicação visível quando o leitor dobra o tamanho do texto.
Atributo sizes
O atributo sizes descreve a largura pretendida do espaço de exibição de uma imagem sob condições de mídia ordenadas quando srcset usa descritores de largura.
sizes="(min-width: 60em) 50vw, 100vw" descreve um espaço de metade da janela em áreas de visualização mais largas.
Atributo srcset
O atributo srcset fornece opções de imagem com descritores de largura ou densidade, dando ao navegador alternativas a um único arquivo de origem.
Uma foto oferece opções de 480w, 800w e 1600w que mostram a mesma composição.

C

Capacidade de passar o ponteiro sobre um elemento
A capacidade de passar o ponteiro sobre um elemento descreve se a entrada principal de apontamento pode permanecer convenientemente sobre ele sem ativá-lo.
Detalhes essenciais permanecem visíveis em dispositivos sensíveis ao toque, enquanto estilos opcionais de passagem do ponteiro são aplicados dentro de uma consulta de capacidade.
Característica de orientação
A característica de orientação compara a largura e a altura da área de visualização; portrait inclui uma área quadrada e landscape significa que a largura é maior.
Uma consulta para orientação paisagem pode corresponder tanto a uma janela larga de computador quanto a um celular na horizontal.
Carregamento tardio
O carregamento tardio adia a busca de uma imagem até que ela se aproxime da área visível, reduzindo os downloads iniciais de conteúdo situado mais abaixo na página.
Uma imagem de galeria abaixo da primeira tela pode usar loading="lazy", enquanto a foto principal inicial carrega rapidamente.
Cascata
A cascata é o processo que resolve conflitos entre declarações CSS; regras condicionais continuam participando quando suas condições correspondem.
Com regras correspondentes de mesma especificidade na mesma camada, a declaração font-size posterior prevalece.
ch
Um ch é uma medida igual à largura de avanço do dígito “0” na fonte atual, frequentemente usada para limitar o comprimento da linha de um parágrafo.
Um artigo limitado a 65ch permanece legível em uma janela larga sem garantir uma contagem exata de caracteres.
Condição de largura mínima
Uma condição min-width corresponde quando a área de visualização tem pelo menos a largura de seu limite indicado, incluindo o próprio valor do limite.
A condição (min-width: 620px) é verdadeira em 620px e continua verdadeira em larguras maiores da área de visualização.
Consulta de mídia
Uma consulta de mídia é uma condição que controla quando o CSS se aplica, com base em características da área de visualização, tipo de saída, capacidades de entrada ou preferências.
Uma consulta min-width adiciona uma segunda coluna de conteúdo quando há espaço suficiente na janela.
Consulta de tamanho do contêiner
Uma consulta de tamanho do contêiner aplica estilos a descendentes quando um contêiner ancestral adequado atende a uma condição sobre suas dimensões.
Dois cartões na mesma página podem usar disposições diferentes porque seus elementos envolventes têm larguras diferentes.
Contêiner de consulta
Um contêiner de consulta é um ancestral declarado como adequado para as características de tamanho que uma regra de contêiner precisa medir para seus descendentes.
Um elemento envolvente com container-type: inline-size pode fornecer informações de largura a um cartão dentro dele.
Contenção de tamanho
A contenção de tamanho impede que o conteúdo determine o tamanho de um contêiner nas dimensões contidas, evitando dependências circulares de dimensionamento.
Uma caixa container-type: size precisa de dimensionamento de altura independente porque seu texto deixa de fornecer essa altura.
cqb
Um cqb é um por cento da dimensão em bloco de um contêiner ancestral adequado, equivalente à altura na escrita horizontal.
Uma unidade de dimensão em bloco precisa de um contêiner adequado nessa direção, não apenas de um contêiner inline-size.
cqi
Um cqi é um por cento da dimensão em linha do contêiner ancestral adequado mais próximo, equivalente à sua largura na escrita horizontal.
Dentro de um contêiner adequado de 500px de largura, 4cqi fornece um tamanho de fonte preferido de 20px.
CSS com prioridade para dispositivos móveis
O CSS com prioridade para dispositivos móveis usa regras básicas comuns para layouts estreitos e acrescenta disposições mais largas por meio de condições de largura mínima conforme o espaço aumenta.
Uma lista de cartões começa com uma coluna e ganha colunas adicionais por meio de consultas min-width crescentes.
CSS com prioridade para telas de computador
O CSS com prioridade para telas de computador começa com estilos básicos para telas largas e usa consultas de largura máxima para alterá-los ou desfazê-los conforme a área de visualização se estreita.
Uma linha criada com prioridade para telas de computador muda para uma pilha vertical dentro de uma consulta max-width para janelas menores.

D

Descritor de densidade
Um descritor de densidade informa a escala de densidade de pixels de uma opção usando o sufixo x, geralmente para uma imagem com tamanho de exibição CSS fixo.
Um logotipo exibido com 180px de largura pode oferecer uma opção de 360 pixels com o descritor de densidade 2x.
Descritor de largura
Um descritor de largura informa a largura real em pixels de origem de uma opção de imagem com o sufixo w; ele não define a largura exibida em CSS.
O descritor 900w só está correto quando o arquivo fornecido tem realmente 900 pixels de largura.
Design web responsivo
Design web responsivo adapta o layout, o texto e as imagens de uma página ao espaço disponível em diferentes janelas e dispositivos.
Uma página de curso empilha seus cartões em um celular estreito e os coloca em colunas quando há espaço na janela.
Deslocamento de layout
Um deslocamento de layout é um movimento visível do conteúdo da página após uma mudança em sua posição inicial, como quando uma imagem carrega sem espaço reservado.
Os atributos de largura e altura da imagem permitem que o navegador reserve espaço com base na proporção e reduza os saltos do texto durante o carregamento.
Dimensão em linha
A dimensão em linha é a dimensão de um elemento ao longo da direção em que o texto corre em uma linha, correspondendo à largura na escrita horizontal.
Uma consulta inline-size de um cartão horizontal responde à largura enquanto sua altura ainda pode acompanhar o texto.
Dimensionamento pela caixa de borda
O dimensionamento pela caixa de borda inclui o preenchimento interno e as bordas na largura e altura declaradas de um elemento, deixando menos espaço para seu conteúdo.
Um elemento envolvente de página com largura total usa box-sizing: border-box para que seu preenchimento interno lateral não cause transbordamento.
Direção de arte
A direção de arte seleciona uma composição ou um recorte diferente da imagem para uma condição de exibição, de modo que o assunto principal permaneça claro no tamanho escolhido.
Um celular recebe um recorte fechado de uma pessoa se apresentando, enquanto uma janela larga mostra a pessoa e o palco.
dvh
Um dvh é um por cento da altura da área de visualização dinâmica, que acompanha mudanças na área visível atual conforme as barras de ferramentas do navegador se movem.
Um painel que usa 100dvh pode mudar de tamanho enquanto a barra de ferramentas de um celular aparece ou desaparece durante a rolagem.

E

Elemento picture
O elemento picture agrupa opções ordenadas de source com um img obrigatório, permitindo direção de arte e formatos alternativos com uma opção de reserva.
Um picture pode oferecer elementos source em AVIF e WebP antes do arquivo JPEG fornecido por seu img final.
Elemento source
Um elemento source dentro de picture oferece opções de imagem e condições opcionais de mídia ou formato que determinam se ele pode ser selecionado.
Um source que usa (min-width: 55em) pode fornecer o recorte amplo antes de um img alternativo para telas estreitas.
em
Um em é uma medida relativa à fonte, baseada na fonte do elemento pai para font-size e na fonte do próprio elemento para outras propriedades.
Um botão com 1em de preenchimento interno horizontal ganha mais espaço ao redor do rótulo quando sua própria fonte cresce.
Emulação responsiva
A emulação responsiva é uma ferramenta do navegador que aproxima condições de dispositivos, como tamanho da área de visualização, densidade da tela e entrada por toque, para testes.
Arrastar a área de visualização emulada revela larguras em que um título de cartão ultrapassa seu contêiner.

F

Folha de estilo para impressão
Uma folha de estilo para impressão aplica CSS à saída impressa, mantendo o conteúdo útil legível e adaptando a navegação, as cores e a apresentação dos links.
Uma regra de impressão oculta botões de menu e pode adicionar o destino de cada link após seu texto.
Função clamp()
A função clamp() limita um tamanho preferido entre um mínimo e um máximo, permitindo que ele mude gradualmente dentro desses limites.
Um título combina rem e vw em clamp() para crescer com a janela dentro de limites úteis.
Função max()
A função max() seleciona o maior valor fornecido, podendo assim estabelecer um limite inferior para uma medida enquanto outro valor muda.
Um espaçamento definido como max(1rem, 2vw) não pode ficar menor que 1rem conforme a área de visualização se estreita.
Função min()
A função min() seleciona o menor valor fornecido, podendo assim estabelecer um limite superior para uma dimensão que, de outro modo, cresceria com o espaço disponível.
Uma caixa com width: min(100%, 36rem) preenche contêineres estreitos, mas para de crescer em 36rem.
Função minmax()
A função minmax() da grade dá a uma trilha um tamanho mínimo e máximo, permitindo que ela cresça ou encolha dentro do intervalo declarado.
Uma trilha que usa minmax(15rem, 1fr) não pode encolher abaixo de 15rem mesmo que seu contêiner seja mais estreito.

L

Largura percentual
Uma largura percentual dá a um elemento uma parcela da largura de seu bloco de referência, permitindo que ele acompanhe mudanças no espaço disponível.
Uma caixa definida com 50% tem 240px de largura quando seu bloco de referência fornece 480px de largura.
Layout intrínseco
Um layout intrínseco se adapta por meio de suas próprias regras de dimensionamento e quebra de linha, permitindo que o conteúdo caiba no espaço disponível sem pontos de quebra explícitos.
Uma linha de cartões com quebra ganha outra linha conforme o contêiner se estreita, sem nenhuma consulta de mídia.
lvh
Um lvh é um por cento da altura da área de visualização grande, representando o espaço de layout disponível quando as barras de ferramentas retráteis do navegador estão ocultas.
Uma seção definida como 100lvh pode se estender por trás das barras de ferramentas móveis enquanto elas ainda estão visíveis.

N

Nome do contêiner
Um nome de contêiner identifica um contêiner ancestral para que uma consulta possa selecioná-lo em vez da referência adequada sem nome mais próxima.
@container sidebar (width >= 30rem) procura um ancestral adequado chamado sidebar.

O

Operador lógico
Um operador lógico combina ou nega condições para que uma consulta possa exigir vários fatos ou aceitar condições alternativas correspondentes.
screen and (min-width: 40em) exige tanto saída para tela quanto uma área de visualização suficientemente larga.
Ordem no código-fonte
A ordem no código-fonte é a sequência de elementos no HTML, que fornece a ordem de leitura e de foco do teclado mesmo quando o CSS altera o posicionamento visual.
Um link movido visualmente para o topo ainda pode ser alcançado por último com Tab se permanecer por último no HTML.

P

Painel Rede
O painel Rede é uma ferramenta do desenvolvedor que lista requisições de recursos e seus detalhes de transferência, ajudando a verificar quais arquivos de imagem uma página baixa.
Um teste no tamanho de um celular pode revelar um download de imagem grande causado por uma indicação sizes que informa um espaço maior que o real.
Palavra-chave auto-fill
A palavra-chave auto-fill de repetição da grade mantém as trilhas que cabem, mesmo quando algumas estão vazias, preservando posições de coluna não usadas na linha.
Dois cartões podem permanecer mais estreitos porque auto-fill deixa espaço reservado para trilhas vazias adicionais.
Palavra-chave auto-fit
A palavra-chave auto-fit de repetição da grade cria tantas trilhas quantas couberem e recolhe as não usadas para que as trilhas ocupadas possam dividir seu espaço.
Dois cartões podem se expandir por uma linha larga quando auto-fit recolhe as trilhas vazias da linha.
Pixel CSS
Um pixel CSS é uma medida de referência usada para layout; em uma tela de alta densidade, ele pode corresponder a vários pixels físicos do dispositivo.
Um celular com razão 3 e uma área de visualização CSS de 390px tem 1170 pixels do dispositivo na largura da tela.
Ponto de quebra
Um ponto de quebra é um limite no qual uma regra condicional altera um layout ou estilo porque o conteúdo precisa de uma disposição diferente.
Uma linha de navegação recebe um ponto de quebra onde seus rótulos completos deixam de caber confortavelmente em uma linha.
Ponto de quebra baseado no conteúdo
Um ponto de quebra baseado no conteúdo é escolhido a partir do comportamento de textos e controles reais, em vez de uma largura predefinida associada a um dispositivo.
O teste de um título de página longo revela que a barra lateral deve passar para baixo dele antes do esperado.
Precisão do ponteiro
A precisão do ponteiro descreve com que exatidão a entrada principal de apontamento pode selecionar uma área, sendo informada como fine, coarse ou none em consultas de mídia.
Um tablet que usa principalmente toque pode informar pointer: coarse mesmo quando sua área de visualização é larga.
Preferência de esquema de cores
Uma preferência de esquema de cores indica a aparência clara ou escura preferida pelo leitor, que uma página pode usar para selecionar cores legíveis para o tema.
Uma consulta de tema escuro combina um fundo escuro com texto claro legível e verifica o contraste resultante.
Preferência por movimento reduzido
Uma preferência por movimento reduzido é uma configuração do sistema que indica que o leitor quer menos animação, disponibilizada por uma característica de mídia CSS.
Movimentos grandes e opcionais podem ser executados apenas dentro de prefers-reduced-motion: no-preference.
Proporção entre largura e altura
A proporção entre largura e altura expressa a relação entre essas dimensões, permitindo que uma caixa de mídia mantenha as mesmas proporções quando suas dimensões mudam.
Uma fotografia de proporção 3:2 exibida com 300px de largura precisa de 200px de altura para manter seu formato original.
Propriedade object-position
A propriedade object-position define o alinhamento do conteúdo da imagem dentro de sua caixa, controlando qual área permanece visível quando o ajuste a recorta.
Uma miniatura usa object-position: top para manter a parte superior da imagem de origem visível quando recortada.

Q

Quebra de linha dos itens flexíveis
A quebra de linha dos itens flexíveis permite que um contêiner flexível coloque itens em linhas adicionais quando seus tamanhos e espaçamentos deixam de caber na linha atual.
Links de navegação com flex-wrap: wrap podem formar uma segunda linha em vez de ultrapassar a página.

R

Razão de pixels do dispositivo
A razão de pixels do dispositivo é o número de pixels do dispositivo por pixel CSS, relacionando a densidade da tela à unidade de referência de layout da página.
Uma foto exibida com 250 pixels CSS de largura pode usar cerca de 500 pixels de origem em uma tela com razão 2.
Referência alternativa da área de visualização pequena
A referência alternativa da área de visualização pequena fornece medidas para unidades relativas ao contêiner quando nenhum ancestral é adequado para a dimensão de que a unidade precisa.
A ausência de container-type pode fazer o dimensionamento em cqi ficar vinculado à janela em vez do elemento envolvente do cartão.
Refluxo
Refluxo é a reorganização do conteúdo para caber no espaço disponível; as WCAG AA verificam conteúdo vertical comum em uma largura de 320 pixels CSS.
Um parágrafo deve se dividir em linhas mais estreitas com zoom de 400% sem exigir rolagem lateral da página.
rem
Um rem é uma medida igual ao tamanho de fonte do elemento raiz, permitindo que dimensões compartilhem uma referência sem se acumular pelo aninhamento.
Com uma fonte de 20px no elemento raiz, um título definido como 1.5rem tem 30px antes de qualquer ampliação por zoom.

S

Sintaxe de intervalos
A sintaxe de intervalos expressa condições de tamanho de mídia ou contêiner com operadores de comparação, tornando explícitos os limites incluídos e excluídos.
A condição (600px <= width < 900px) inclui 600px, mas exclui 900px.
svh
Um svh é um por cento da altura da área de visualização pequena, representando o espaço de layout móvel com as barras de ferramentas do navegador visíveis.
Uma seção inicial usa min-height: 100svh para ter uma altura inicial estável e permitir o crescimento do conteúdo.

T

Tag meta da área de visualização
A tag meta da área de visualização fornece aos navegadores móveis instruções de largura de layout e escala inicial para que possam exibir uma página em tamanho útil.
A tag deve ficar dentro do <head> do documento e solicita width=device-width, initial-scale=1.
Tamanho intrínseco da imagem
O tamanho intrínseco de uma imagem é a informação de tamanho fornecida pelo recurso de imagem, usada quando o CSS e o HTML não especificam outro tamanho de exibição.
Uma imagem grande pode transbordar em um artigo estreito, a menos que o CSS limite sua largura ao espaço disponível.
Texto alternativo
Texto alternativo é o equivalente textual em um elemento img que transmite a finalidade ou o conteúdo da imagem quando ela não pode ser percebida.
Uma única descrição alt deve permanecer precisa para todos os recortes que o picture ao redor pode selecionar.
Tipo de mídia
Um tipo de mídia identifica o tipo geral de saída, como tela ou impressão, ao qual uma folha de estilo ou regra CSS condicional se aplica.
Um bloco @media print remove controles de navegação que o leitor não pode usar no papel.
Transbordamento horizontal
O transbordamento horizontal ocorre quando o conteúdo ultrapassa a largura disponível para sua caixa, podendo criar rolagem lateral ou conteúdo oculto.
Um painel fixo de 700px transborda em uma página de 360px mesmo quando a tag meta da área de visualização está presente.

U

Unidade relativa
Uma unidade relativa obtém seu tamanho computado de outra medida, como uma dimensão do contêiner, um tamanho de fonte ou a área de visualização.
Usar rem para texto faz seu tamanho acompanhar a fonte do elemento raiz em vez de um valor fixo em pixels.
Unidade relativa à área de visualização
Uma unidade relativa à área de visualização é uma medida baseada em uma porcentagem de uma dimensão dessa área, independente do bloco de referência do elemento.
Um elemento filho de barra lateral definido como 50vw ainda usa metade da largura da janela, mesmo quando isso ultrapassa a barra lateral.
Unidade relativa ao contêiner de consulta
Uma unidade relativa ao contêiner de consulta é uma medida baseada em um por cento do tamanho de um contêiner ancestral adequado em uma dimensão específica.
Um título com 5cqi cresce quando o elemento envolvente de seu cartão fica mais largo, mesmo que a área de visualização permaneça igual.
Unidades cqmin e cqmax
As unidades cqmin e cqmax usam, respectivamente, um por cento da menor e da maior dimensão adequada do contêiner para o dimensionamento proporcional.
Uma medida em cqmin acompanha a menor dimensão de referência quando as duas dimensões são diferentes.

V

Valor contain
O valor contain de object-fit mantém a imagem inteira visível dentro de uma caixa dimensionada, preservando suas proporções e deixando espaço vazio se necessário.
Um diagrama usa contain para que todos os seus rótulos permaneçam visíveis mesmo quando seu formato difere do da miniatura.
Valor cover
O valor cover de object-fit preenche uma caixa de imagem dimensionada preservando as proporções da origem e recortando as partes que se estendem para fora da caixa.
Uma foto de curso preenche uma miniatura de 4:3 com cover, então parte do conteúdo próximo às bordas pode desaparecer.
vw
Um vw é um por cento da largura da área de visualização, fazendo uma medida acompanhar a largura da janela conforme ela muda em pixels CSS.
Com uma área de visualização de 900px de largura, 10vw produz uma medida computada de 90px.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar