Pular para o conteúdo
Cursos

DevClub

LógicaFront-endBack-endMobile

IA Club

IA na prática
Estudar programaçãoEstudar IA

Aula 4 de 6

Faça o componente responder à tela e ao próprio container

Aplique mobile-first, intervalos de breakpoint e container query para adaptar a mesma seção sem duplicar conteúdo nem inverter a ordem semântica.

30 minutos · leitura + prática · nível iniciante

Ao terminar esta aula, você vai conseguir

  • Construir o estado base para a menor largura
  • Aplicar breakpoints de largura mínima
  • Usar container query em componente reutilizável

Responsividade no Tailwind é uma variação da mesma utility. A classe sem prefixo define o estado base; md:* passa a valer a partir de 48rem. Essa ordem reduz sobrescritas e obriga você a resolver o conteúdo no espaço mais restrito antes de acrescentar colunas.

Comece pela seção de produto em coluna:

html
<section class="flex flex-col gap-6 p-4 md:flex-row md:p-8">
  <div class="min-w-0 flex-1">Conteúdo</div>
  <aside class="md:w-80">Preço</aside>
</section>

No mobile, não existe prefixo sm: para “tela pequena”. O estado sem prefixo é o mobile. md:flex-row acrescenta a direção horizontal quando existe largura. O breakpoint descreve condição mínima, não modelo de aparelho.

Pense em vestir camadas. O estado base é a roupa que sempre existe; cada breakpoint acrescenta ou troca uma peça quando a condição permite. A analogia falha se você imaginar que a camada antiga desaparece por completo: propriedades não sobrescritas continuam na cascata.

html
<section class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3">
  ...
</section>

Escolha pontos pelo conteúdo. Arraste lentamente a largura e observe quando título, preço e botão deixam de caber. Um breakpoint em 48rem é padrão útil, mas não desculpa uma faixa quebrada em 43rem.

Variantes de máximo servem para intervalo ou manutenção de legado:

html
<aside class="hidden md:max-lg:block">Resumo compacto</aside>

Leia como frase: a partir de md e antes de lg, mostre o resumo. Evite empilhar dois mínimos como md:lg:*; o maior já contém o menor e a intenção fica opaca.

Viewport não resolve todo componente. O mesmo cartão pode aparecer no conteúdo principal e numa sidebar. Marque o pai com @container e use @md:* para responder ao espaço recebido:

html
<aside class="@container">
  <article class="flex flex-col @md:grid @md:grid-cols-2">...</article>
</aside>

No laboratório, a regra CSS equivalente está escrita diretamente porque o player não executa o compilador. Redimensionar a prateleira demonstra o mesmo mecanismo que Tailwind gera: container-type no ancestral e @container ao redor da regra. Essa transparência importa para você saber depurar fora da sintaxe utilitária.

Não use order-* para fazer o preço aparecer primeiro visualmente se o DOM lê outra sequência. Leitor de tela e navegação seguem a ordem estrutural. Se a ordem precisa mudar por significado, reavalie o HTML ou duplique apenas quando há justificativa semântica e manutenção segura.

Teste em 320px, 768px e 1440px, mas não pare nesses pontos. Aumente zoom, use um nome de plano longo e simule preço com muitas casas. O sucesso não é “o card mudou em md”; é nenhum conteúdo ficar inacessível no caminho.

Você encerra a aula quando consegue explicar por que a página usa breakpoint e o cartão usa container query. Essa escolha será mantida no projeto final, onde o mesmo bloco precisa funcionar na grade principal e na seção de comparação.

Registre também a largura em que o conteúdo pediu mudança. Esse número, acompanhado do motivo, vale mais que chamar o breakpoint de tablet.

Laboratório ao vivo

Cartão que responde ao espaço recebido

Redimensione a prévia. Compare a regra de viewport com a regra de container e termine quando o cartão mudar sem alterar a ordem do HTML.

Pronto para testar
Resultado

Pare e pense

Quando uma container query é melhor que um breakpoint de viewport?

Escolha uma resposta
Missão da aula

Faça sem copiar

Teste a seção em 320, 768 e 1440 pixels e numa sidebar estreita; registre qual condição mudou cada layout e mantenha a ordem de leitura.

Fontes para consultar

Terminou a missão?

Marque apenas quando você conseguir explicar o conceito e concluir o desafio. O progresso fica salvo somente neste navegador.

Próxima: Complete estados acessíveis, tema próprio e dark mode →