Propriedade flex-direction: Orientando os itens (linha ou coluna)
Controle a direção principal dos itens flex (horizontal ou vertical).
A propriedade flex-direction é uma das primeiras e mais importantes propriedades que você aplicará ao seu Contêiner Flex. Ela define o eixo principal (main axis) do contêiner, que por sua vez determina a direção em que os Itens Flex são dispostos.
Pense no flex-direction como a "direção da fila" em um evento. Se a fila é horizontal, as pessoas (flex-items) se alinham lado a lado. Se a fila é vertical, elas se alinham uma abaixo da outra. O flex-direction é quem decide essa orientação.
Eixo Principal e Eixo Cruzado
No Flexbox, existem dois eixos principais:
- Eixo Principal (Main Axis): É a direção definida por
flex-direction. Os Itens Flex são dispostos ao longo deste eixo. - Eixo Cruzado (Cross Axis): É o eixo perpendicular ao eixo principal.
A compreensão desses dois eixos é crucial, pois muitas outras propriedades do Flexbox (como justify-content e align-items) operam em relação a eles.
Valores da Propriedade flex-direction
A propriedade flex-direction é aplicada ao Contêiner Flex e aceita quatro valores principais:
row(padrão):- Os Itens Flex são dispostos em uma linha, da esquerda para a direita (em idiomas LTR - Left-to-Right, como o português).
- O eixo principal é horizontal.
- O eixo cruzado é vertical.
row-reverse:- Os Itens Flex são dispostos em uma linha, mas na ordem inversa, da direita para a esquerda.
- O eixo principal é horizontal.
- O eixo cruzado é vertical.
column:- Os Itens Flex são dispostos em uma coluna, de cima para baixo.
- O eixo principal é vertical.
- O eixo cruzado é horizontal.
column-reverse:- Os Itens Flex são dispostos em uma coluna, mas na ordem inversa, de baixo para cima.
- O eixo principal é vertical.
- O eixo cruzado é horizontal.
Exemplo Prático:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Flex-direction</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f4f4f4;
}
.flex-container {
display: flex;
background-color: #e0e0e0;
border: 2px solid #333;
padding: 10px;
min-height: 100px; /* Altura mínima para visualização */
margin-bottom: 20px;
}
.flex-item {
background-color: lightblue;
border: 1px solid blue;
padding: 15px;
margin: 5px;
color: #333;
font-weight: bold;
text-align: center;
width: 80px; /* Largura fixa para os itens */
height: 60px; /* Altura fixa para os itens */
line-height: 60px; /* Para centralizar texto verticalmente */
}
/* --- Exemplos de flex-direction --- */
.container-row {
flex-direction: row; /* Padrão */
}
.container-row-reverse {
flex-direction: row-reverse;
}
.container-column {
flex-direction: column;
height: 300px; /* Necessário para ver a coluna */
}
.container-column-reverse {
flex-direction: column-reverse;
height: 300px; /* Necessário para ver a coluna */
}
</style>
</head>
<body>
<h1>Propriedade `flex-direction`</h1>
<h2>`flex-direction: row` (Padrão)</h2>
<div class="flex-container container-row">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>
<p>Itens dispostos em uma linha, da esquerda para a direita.</p>
<h2>`flex-direction: row-reverse`</h2>
<div class="flex-container container-row-reverse">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>
<p>Itens dispostos em uma linha, da direita para a esquerda.</p>
<h2>`flex-direction: column`</h2>
<div class="flex-container container-column">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>
<p>Itens dispostos em uma coluna, de cima para baixo.</p>
<h2>`flex-direction: column-reverse`</h2>
<div class="flex-container container-column-reverse">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>
<p>Itens dispostos em uma coluna, de baixo para cima.</p>
</body>
</html>
Resultado:
- Você verá os itens se organizando em diferentes direções (horizontal ou vertical) e ordens (normal ou reversa) de acordo com o
flex-directionaplicado ao contêiner.
Boas Práticas:
- Defina Cedo:
flex-directioné uma das primeiras propriedades que você deve definir em seu Contêiner Flex, pois ela estabelece a base para como os outros alinhamentos funcionarão. - Pense nos Eixos: Sempre tenha em mente qual é o eixo principal e qual é o eixo cruzado, pois isso influenciará o comportamento de
justify-contentealign-items. - Cuidado com
*-reverse: Usarrow-reverseoucolumn-reversepode ter implicações para a acessibilidade, pois a ordem visual pode ser diferente da ordem do HTML (lida por leitores de tela). Use com moderação e teste a acessibilidade.
Dominar flex-direction é o primeiro passo para controlar o fluxo dos seus Itens Flex e construir layouts Flexbox dinâmicos.