Fundamentos de Layout Flexbox: Propriedades e Conceitos

O layout de páginas web é uma aplicação crucial do CSS. Soluções tradicionais baseadas no modelo de caixa, que dependem de display, position e float, apresentam dificuldades em alinhamentos complexos como centralização vertical. O Flexbox, uma proposta do W3C de 2009, oferece uma abordagem simplificada para layouts responsivos, com suporte universal em navegadores modernos.

1. Introdução ao Flexbox

Flexbox (Flexible Box) permite designs flexíveis. Qualquer contêiner pode ser configurado com:

.container-principal {
  display: flex;
}

Para elementos inline:

.elemento-inline {
  display: inline-flex;
}

Observação: Propriedades como float, clear e vertical-align são ignoradas em elementos filhos.

2. Terminologia

  • Contêiner Flex: Elemento pai com display: flex
  • Itens Flex: Elementos filhos diretos
  • Eixos: Principal (main axis) e transversal (cross axis)

3. Propriedades do Contêiner

flex-direction

Define a direção do eixo principal:

.container {
  flex-direction: linha | linha-inversa | coluna | coluna-inversa;
}

flex-wrap

Controla quebra de linha:

.container {
  flex-wrap: sem-quebra | quebra | quebra-inversa;
}

flex-flow

Atalho para flex-direction e flex-wrap:

.container {
  flex-flow: direção modo-quebra;
}

justify-content

Alinhamento no eixo principal:

.container {
  justify-content: inicio | fim | centro | espaco-entre | espaco-uniforme;
}

align-items

Alinhamento no eixo transversal:

.container {
  align-items: inicio | fim | centro | linha-base | esticar;
}

align-content

Alinha múltiplas linhas:

.container {
  align-content: inicio | fim | centro | espaco-entre | espaco-uniforme | esticar;
}

4. Propriedades dos Itens

order

Ordem de exibição:

.item {
  order: 3; /* Valor inteiro */
}

flex-grow

Proporção de expansão:

.item {
  flex-grow: 2; /* Fator de crescimento */
}

flex-shrink

Proporção de redução:

.item {
  flex-shrink: 0; /* Impede redução */
}

flex-basis

Tamanho base inicial:

.item {
  flex-basis: 250px; /* Largura inicial */
}

flex

Atalho para grow/shrink/basis:

.item {
  flex: 1 0 auto; /* Cresce, não reduz, tamanho base automático */
}

align-self

Alinhamento individual:

.item-especial {
  align-self: centro; /* Sobrepõe alinhamento do contêiner */
}

Tags: CSS3 Flexbox Web Design frontend Layout Responsivo

Publicado em 7-10 03:16