Dominando o Flexbox em CSS
Um guia completo para entender e usar o Flexbox em seus layouts.
InSkillCoach
Dominando o Flexbox em CSS
O Flexbox (Flexible Box Layout) é um modelo de layout CSS que permite criar estruturas responsivas e flexíveis sem usar float ou posicionamento. É uma ferramenta poderosa para alinhar e distribuir o espaço entre os elementos dentro de um contêiner.
Conceitos básicos
O Flexbox funciona com dois tipos de elementos:
- O contêiner flex (pai)
- Os itens flex (filhos)
Criando um contêiner flex
Para criar um contêiner flex, use a propriedade display com o valor flex ou inline-flex:
.container {
display: flex; /* ou inline-flex */
}
Propriedades do contêiner flex
Direção dos itens
.container {
flex-direction: row | row-reverse | column | column-reverse;
}
row(padrão): da esquerda para a direitarow-reverse: da direita para a esquerdacolumn: de cima para baixocolumn-reverse: de baixo para cima
Quebra de linha
.container {
flex-wrap: nowrap | wrap | wrap-reverse;
}
nowrap(padrão): todos os itens em uma única linhawrap: os itens passam para a linha seguinte, se necessáriowrap-reverse: os itens passam para a linha anterior, se necessário
Atalho flex-flow
.container {
flex-flow: row nowrap; /* flex-direction e flex-wrap combinados */
}
Alinhamento horizontal (justify-content)
.container {
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
}
flex-start(padrão): itens alinhados no inícioflex-end: itens alinhados no fimcenter: itens centralizadosspace-between: espaço igual entre os itensspace-around: espaço igual ao redor dos itensspace-evenly: espaço igual entre e ao redor dos itens
Alinhamento vertical (align-items)
.container {
align-items: stretch | flex-start | flex-end | center | baseline;
}
stretch(padrão): estica os itens para preencher o contêinerflex-start: itens alinhados no topoflex-end: itens alinhados na parte inferiorcenter: itens centralizados verticalmentebaseline: itens alinhados pela linha de base
Alinhamento das linhas (align-content)
.container {
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
Essa propriedade só tem efeito quando há várias linhas de itens.
Propriedades dos itens flex
Ordem
.item {
order: 0; /* padrão */
}
Quanto maior o valor, mais tarde o item aparece na ordem.
Flexibilidade (flex-grow, flex-shrink, flex-basis)
.item {
flex-grow: 0; /* padrão */
flex-shrink: 1; /* padrão */
flex-basis: auto; /* padrão */
}
flex-grow: capacidade de um item de crescerflex-shrink: capacidade de um item de encolherflex-basis: tamanho padrão de um item
Atalho flex
.item {
flex: 0 1 auto; /* flex-grow, flex-shrink e flex-basis combinados */
}
Alinhamento individual
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
Essa propriedade permite substituir o alinhamento definido por align-items para um item específico.
Exemplo prático
Veja um exemplo de layout com Flexbox:
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
.container {
display: flex;
justify-content: space-between;
align-items: center;
height: 200px;
background-color: #f0f0f0;
}
.item {
width: 100px;
height: 100px;
background-color: #3498db;
color: white;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
}
Casos de uso comuns
- Centralização perfeita (horizontal e vertical):
.container {
display: flex;
justify-content: center;
align-items: center;
}
- Navegação responsiva:
nav {
display: flex;
flex-wrap: wrap;
}
nav a {
flex: 1 1 100px;
}
- Grade flexível:
.grid {
display: flex;
flex-wrap: wrap;
}
.grid-item {
flex: 1 1 300px;
margin: 10px;
}
Conclusão
O Flexbox é uma ferramenta poderosa para criar layouts flexíveis e responsivos. Ele simplifica consideravelmente muitos desafios de layout que eram difíceis de resolver com métodos tradicionais, como floats e posicionamento.
Para aprofundar seus conhecimentos em Flexbox, recomendo explorar o guia completo na MDN e praticar com ferramentas interativas como o Flexbox Froggy.
Sobre InSkillCoach
Especialista em treinamento e tecnologias
Coach especializado em tecnologias avançadas e IA, apoiado pela GNeurone Inc.
Certificações:
- AWS Certified Solutions Architect – Professional
- Certificações Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão