Aula 08 de 10

Responsividade

Fazer uma página funcionar bem no celular, no tablet e no computador — sem criar três versões diferentes.

@media mobile-first unidades relativas clamp() max-width
// entendendo

Como funciona

Uma media query aplica CSS somente quando a tela tem um certo tamanho. A abordagem mobile-first é escrever o CSS base para celular e sobrescrever para telas maiores.

Unidades relativas ajudam muito:

  • % — relativo ao container pai
  • rem — relativo ao tamanho base do navegador (16px)
  • vw / vh — relativo à largura/altura da janela

clamp(min, ideal, max) cria um valor que cresce com a tela mas tem limites — ótimo para texto responsivo.

/* mobile primeiro */
.container {
  padding: 16px;
  font-size: 1rem;
}

/* a partir de 768px (tablet/desktop) */
@media (min-width: 768px) {
  .container {
    padding: 40px;
    font-size: 1.125rem;
  }
}
// mão na massa

Agora é com você

Texto que muda com a tela

Crie um <h1> com font-size: 1.5rem no mobile. Usando media query, aumente para 3rem em telas maiores que 600px. Redimensione o preview para ver o efeito.

a8e1.html
Preciso de uma dica
Dentro do @media: h1 { font-size: 3rem; }
Observação: O preview do editor é pequeno — a media query de 600px pode já estar ativa dependendo do tamanho. Tente valores menores como 200px para ver o efeito no preview.

Cards que empilham no mobile

Crie 3 cards em linha no desktop. No mobile (menos de 600px), eles devem empilhar um abaixo do outro. Use Flexbox com flex-direction e media query.

a8e2.html
Preciso de uma dica
No @media: .grade { flex-direction: row; }

Texto com clamp()

Use clamp() para criar um título que cresce de 1.2rem a 3rem conforme a largura da tela. Sem precisar de media query.

a8e3.html
Observação: clamp(1.2rem, 5vw, 3rem) significa: no mínimo 1.2rem, idealmente 5% da largura da janela, no máximo 3rem. É uma das ferramentas mais elegantes do CSS moderno.
// desafio

página responsiva

Monte uma página com navbar, hero e grade de cards totalmente responsiva: no celular tudo empilha, no desktop fica em linha. Use max-width: 900px; margin: auto no container para não esticar demais em telas grandes.

a8d1.html DESAFIO