Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Dúvida] CSS: quando usar flexbox e quando usar grid?

Estou começando a estudar CSS e fico muito confuso sobre quando usar Flexbox e quando usar Grid. Além disso, sempre me perco na hora de centralizar elementos ou criar espaçamentos entre os menus. Aquela velha dúvida como centraliza uma div?

1 resposta
solução!

Oi, Eduardo! Essa é uma das dúvidas mais comuns de quem está começando, e é super normal se confundir no início. Vamos desmistificar isso juntos de um jeito simples.

A principal diferença entre os dois está na dimensão do layout que você quer criar:

1. Flexbox

O Flexbox trabalha em uma única dimensão por vez (ou uma linha OU uma coluna).

  • Quando usar: Quando você precisa alinhar elementos em sequência, como uma barra de navegação (menu), um grupo de botões lado a lado ou uma lista de itens que precisa se ajustar horizontal ou verticalmente.
  • A famosa pergunta: Como centralizar uma div? Com Flexbox, isso fica extremamente simples. Você só precisa aplicar estas três propriedades no elemento pai:
.container {
  display: flex;
  justify-content: center; /* Centraliza na horizontal */
  align-items: center;     /* Centraliza na vertical */
}

2. Grid Layout

O Grid trabalha em duas dimensões simultaneamente (linhas E colunas ao mesmo tempo).

  • Quando usar: Quando você quer construir a estrutura macro da página, como um portal de notícias cheio de blocos posicionados em lugares específicos, uma galeria de fotos com tamanhos definidos ou um painel (dashboard). Com ele, você consegue ditar exatamente onde cada elemento começa e termina na malha da tela.

Espaçamentos simplificados

Para criar espaços entre itens de menus ou colunas sem precisar ficar calculando margens para cada um, a propriedade gap funciona muito bem tanto no Flexbox quanto no Grid. Por exemplo:

.menu {
  display: flex;
  gap: 20px; /* Cria um espaço de 20px entre cada item automaticamente */
}

Guia Prático para fixar

Para visualizar essas estruturas funcionando na prática, você pode dar uma olhada neste Guia Visual: Posicionamento CSS no CodePen. Ele mostra de forma bem clara como o Flexbox resolve a centralização e como o Grid organiza colunas de forma estruturada.

Espero que essa explicação ajude a clarear suas ideias nos próximos projetos! Se precisar de algo mais, é só chamar.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!