Flexbox e CSS Grid são dois sistemas de layout poderosos no CSS. Cada um serve melhor em determinados contextos. Neste artigo, vamos entender quando usar Flexbox e quando usar Grid — com exemplos práticos e explicações claras.
O que é Flexbox?
Flexbox é um sistema de layout unidimensional: ele organiza elementos em linha ou coluna. É ótimo para alinhamentos e pequenos layouts.
Exemplo básico:
<div class="container">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
</div>
.container {
display: flex;
flex-direction: row; /* ou column */
justify-content: space-between;
align-items: center;
}
O que é CSS Grid?
CSS Grid é um sistema de layout bidimensional. Ele organiza elementos em linhas e colunas simultaneamente, sendo ideal para layouts mais complexos.
Exemplo básico:
<div class="container">
<div id="one">1</div>
<div id="two">2</div>
<div id="three">3</div>
<div id="four">4</div>
<div id="five">5</div>
</div>
.container {
display: grid;
grid-template-columns: 60px 60px;
grid-template-rows: auto;
}
Para alinhamento dentro do grid:
#one {
justify-self: start; /* ou end, center, stretch */
}
Outras propriedades úteis incluem: justify-items
, align-items
, align-self
, e gap
.
Propriedades em comum
Flexbox e Grid compartilham algumas propriedades de alinhamento:
justify-content
align-items
align-self
gap
Grid é para layout; Flexbox é para alinhamento
Resumidamente:
- Flexbox: ótimo para componentes, menus, cartões, listas horizontais ou verticais simples.
- Grid: excelente para estruturas completas de páginas, seções, áreas com múltiplas colunas e linhas.
“CSS Grid é para layout estrutural; Flexbox é para alinhamento interno.”
Quando usar cada um?
Use Flexbox quando:
- Você precisa alinhar itens em uma linha ou coluna;
- O conteúdo dita o layout (content-first);
- Você quer criar menus, botões, cards ou barras de ferramentas;
- Está lidando com um número pequeno e previsível de elementos.
Use CSS Grid quando:
- Você está construindo um layout completo de página ou seção;
- Precisa de controle em duas dimensões (linhas e colunas);
- Deseja controlar espaçamentos com
gap
entre colunas/linhas; - Quer alinhar elementos sem depender da ordem HTML;
- O layout guia o conteúdo (layout-first).
Exemplo combinado
Você pode usar Grid para estruturar o layout e Flexbox dentro das seções para alinhamento.
<div id="container">
<header>Header</header>
<aside>Aside</aside>
<main>Main</main>
<footer>Footer</footer>
</div>
#container {
display: grid;
grid-template-areas:
"header header"
"aside main"
"footer footer";
grid-template-columns: 200px 1fr;
gap: 20px;
}
header {
display: flex;
justify-content: space-between;
align-items: center;
}
Perguntas frequentes
- Flexbox ainda é útil? Sim! Especialmente para alinhamento e layouts menores.
- Grid substitui o Flexbox? Não — eles se complementam.
- Grid funciona em design responsivo? Sim, com unidades como
fr
,minmax()
e media queries. - Grid é compatível com navegadores? Sim. Todos os navegadores modernos suportam Grid Layout.
Conclusão
CSS Flexbox e Grid são ferramentas que funcionam melhor juntas. Use Grid para estruturar e Flexbox para alinhar. Aprender a combinar os dois ajuda a construir layouts modernos, flexíveis e responsivos com mais facilidade.
Se você está começando, experimente usar Flexbox primeiro. Depois, explore o poder do Grid.
Bons códigos!
Deixe um comentário