Este projeto demonstra o uso de Flexbox no CSS, incluindo suas propriedades mais importantes para o container e para os itens, além do uso de pseudo-classes e media queries para responsividade.
O Flexbox (Flexible Box Layout) é um modelo de layout do CSS que permite organizar elementos de forma eficiente, adaptável e responsiva, tanto no eixo horizontal quanto no vertical.
Ele é ativado ao definir display: flex
no elemento pai (container).
O exemplo é composto por:
- Container Flex (
.container
) com propriedades de alinhamento e espaçamento. - Itens Flex (
.item
) demonstrando propriedades de crescimento, encolhimento e tamanho base. - Pseudo-classes para interações como
:hover
,:focus
,:active
,:first-child
, etc. - Media Queries para ajustes responsivos.
No Flexbox, o container é o elemento pai que controla o alinhamento dos itens.
Propriedade | Descrição | Exemplos |
---|---|---|
display |
Ativa o flexbox | display: flex; |
flex-direction |
Define a direção principal dos itens | row , column , row-reverse , column-reverse |
flex-wrap |
Permite quebra de linha | nowrap , wrap , wrap-reverse |
flex-flow |
Atalho para flex-direction + flex-wrap |
row wrap |
justify-content |
Alinha os itens no eixo principal | flex-start , center , flex-end , space-between , space-around , space-evenly |
align-items |
Alinha os itens no eixo cruzado (vertical se row ) |
flex-start , center , flex-end , stretch , baseline |
align-content |
Alinha múltiplas linhas no eixo cruzado | flex-start , center , flex-end , space-between , space-around |
gap |
Espaço entre os itens | gap: 20px; |
As propriedades abaixo afetam cada item individual dentro do container.
Propriedade | Descrição | Exemplo |
---|---|---|
order |
Define a ordem de exibição | order: 2; |
flex-grow |
Define quanto o item cresce | flex-grow: 1; |
flex-shrink |
Define quanto o item encolhe | flex-shrink: 1; |
flex-basis |
Define o tamanho inicial antes de distribuir o espaço | flex-basis: 200px; |
flex |
Atalho para flex-grow flex-shrink flex-basis |
flex: 1 1 200px; |
align-self |
Alinhamento individual | align-self: center; |
O exemplo também demonstra o uso de pseudo-classes para melhorar a interação e a aparência dos elementos.
:hover
→ Aplica estilo quando o mouse está sobre o elemento.:active
→ Aplica estilo enquanto o botão do mouse está pressionado.:first-child
→ Aplica estilo ao primeiro item.:last-child
→ Aplica estilo ao último item.:nth-child(odd)
→ Aplica estilo a itens ímpares.:focus
→ Aplica estilo quando o elemento (ex.: input) está focado.:disabled
→ Aplica estilo a botões desabilitados.
O Flexbox já é naturalmente flexível, mas é comum combinar com media queries para criar layouts adaptáveis.
Exemplos do código:
@media (min-width: 768px) {
.container {
flex-direction: column;
}
}
@media (max-width: 480px) {
.item {
background: #e67e22;
font-size: 14px;
}
}
- A partir de 768px: os itens passam a ser exibidos em coluna.
- Até 480px: o tamanho da fonte é reduzido e a cor de fundo é alterada.
O Eixo Principal (Main Axis) é definido pela propriedade flex-direction
.
O Eixo Cruzado (Cross Axis) é perpendicular ao eixo principal.
.container (pai) → controla alinhamento
├── .item (filho) → pode crescer, encolher, alinhar individualmente
├── .item
├── .item
-
Centralização perfeita
Para centralizar horizontal e verticalmente:display: flex; justify-content: center; align-items: center;
-
Espaçamento automático
Usarmargin-left: auto;
oumargin-right: auto;
em um item para empurrá-lo para o lado. -
Flex + Responsividade
Flexbox é ótimo para layout fluido, mas combine com grid se precisar de layouts mais complexos.