Pular para o conteúdo
Cursos

DevClub

LógicaFront-endBack-endMobile

IA Club

IA na prática
Estudar programaçãoEstudar IA

Aula 6 de 6

Projeto Flexbox: monte um checkout responsivo

Reúna eixos, alinhamento, tamanho flexível e quebra de linha num checkout que preserva conteúdo e foco em telas estreitas.

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

Ao terminar esta aula, você vai conseguir

  • Dividir um layout em containers flexíveis pequenos
  • Adaptar itens sem alterar a ordem semântica
  • Revisar overflow, foco e escolha entre Flexbox e Grid
Três itens alinhados no eixo principal e observados pelo eixo cruzado.

O projeto final reúne as decisões do curso num checkout da livraria. O objetivo não é colocar display: flex em toda div, mas reconhecer pequenos grupos unidimensionais: links do cabeçalho, dados de um produto e ações do resumo.

Pense em organizar um balcão por estações. Uma estação recebe navegação, outra confere itens e outra fecha o pagamento. Cada estação tem uma direção e uma regra de espaço próprias. No CSS, cada estação vira um container flexível e seus controles viram itens. O limite da analogia é que containers podem estar aninhados e o tamanho de um afeta o espaço disponível do outro; por isso a gente testa o conjunto em várias larguras.

Comece pela ordem que precisa ser lida

Escreva o item do carrinho na sequência natural:

html
<article class="item">
  <div class="capa" aria-hidden="true">HTML</div>
  <div class="dados">
    <h2>HTML sem Mistério</h2>
    <p>Entrega digital</p>
  </div>
  <strong class="preco">R$ 39</strong>
  <button type="button">Remover</button>
</article>

Imagem, descrição, preço e ação formam uma leitura coerente sem CSS. Essa é sua proteção para telas pequenas e tecnologias assistivas. Não use order para consertar marcação escrita ao contrário.

Dê flexibilidade a quem pode negociar espaço

O bloco de dados pode crescer e encolher; capa, preço e botão devem preservar o conteúdo:

css
.item {
  display: flex;
  align-items: center;
  gap: 1rem;
}

.capa {
  flex: 0 0 4rem;
}

.dados {
  flex: 1 1 14rem;
  min-width: 0;
}

.preco,
.item button {
  flex: 0 0 auto;
}

Essa regra volta ao algoritmo técnico: basis define o começo, grow entrega a sobra a .dados e shrink permite reduzir esse bloco. min-width: 0 evita que um título longo force overflow. Os controles mantêm tamanho ligado ao próprio conteúdo.

Quebre quando a linha deixar de ajudar

Em tela estreita, autorize wrap em vez de espremer tudo:

css
@media (max-width: 34rem) {
  .item {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .dados {
    flex-basis: calc(100% - 5rem);
  }
}

O breakpoint não representa um aparelho específico; ele marca o ponto em que o conteúdo deixa de caber com clareza. Arraste a largura lentamente e escolha esse ponto observando o layout.

Evite transformar o checkout inteiro num único container flexível. O cabeçalho tem sua própria fila, cada produto tem outra e o resumo forma um terceiro grupo. Containers pequenos deixam claro quem pode crescer, quem pode quebrar e qual eixo pertence a cada decisão. Um item da fila externa pode ser container da fila interna sem conflito: ele exerce dois papéis em contextos diferentes.

Um erro frequente é colocar justify-content: space-between no item e considerar o trabalho encerrado. Com títulos diferentes, os intervalos mudam e o botão pode saltar de posição. Outro erro é usar position: absolute no preço; ele sai do fluxo e cobre texto quando a fonte cresce. Distribua responsabilidade com basis, grow, shrink e gap.

Faça a revisão que encerra o curso

Personalize o laboratório e teste 320, 768 e 1280 pixels. Aumente o texto do título, navegue apenas com Tab e aplique zoom de 200%. Não precisa ficar idêntico em todas as larguras; precisa conservar conteúdo, ordem e controles utilizáveis.

A missão termina com três produtos, nenhum scroll horizontal, foco na mesma ordem apresentada e todos os intervalos criados por gap ou padding intencional. Por fim, explique por que cada grupo usa Flexbox. Se sua resposta for “porque organiza uma linha ou coluna”, o mecanismo e a escolha finalmente estão conectados.

Laboratório ao vivo

Checkout completo da livraria

Personalize os dois livros e reduza a largura da prévia. O projeto deve quebrar ações sem sobrepor preço, título ou controles.

Pronto para testar
Resultado

Pare e pense

Qual decisão preserva melhor a ordem de leitura no checkout responsivo?

Escolha uma resposta
Missão da aula

Faça sem copiar

Construa sua versão com três produtos. Termine quando funcionar a 320px, não houver overflow e o foco passar por links e botões na mesma ordem visual.

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.

Voltar ao curso e ver seu progresso →