Revisão do CSS Flexbox

Introdução ao CSS Flexbox e ao Modelo Flexível

  • Definição: CSS flexbox é um modelo de layout unidimensional que permite organizar elementos em linhas e colunas dentro de um contêiner.
  • Modelo Flex: Este modelo define como os itens flex são organizados dentro de um contêiner flex. Todo contêiner flex possui dois eixos: o eixo principal e o eixo transversal.

A Propriedade flex-direction

  • Definição: Esta propriedade define a direção do eixo principal. O valor padrão de flex-direction é row, que posiciona todos os itens flex na mesma linha, na direção do idioma padrão do seu navegador (da esquerda para a direita ou da direita para a esquerda).
  • flex-direction: row-reverse;: Isso inverte os itens na linha.
  • flex-direction: column;: Isso alinhará os itens flex verticalmente em vez de horizontalmente.
  • flex-direction: column-reverse;: Isso inverte a ordem dos itens flex na vertical.
<div class="container">
  <div class="box">1</div>
  <div class="box">2</div>
  <div class="box">3</div>
</div>
.container {
  display: flex;
  flex-direction: row;
  gap: 10px;
}

.box {
  background-color: lightblue;
  padding: 20px;
  text-align: center;
}

A Propriedade flex-wrap

  • Definição: Esta propriedade determina como os itens flexíveis são quebrados dentro de um contêiner flexível para se ajustarem ao espaço disponível. flex-wrap pode assumir três valores possíveis: nowrap, wrap e wrap-reverse.
  • flex-wrap: nowrap;: Este é o valor padrão. Os itens flex não serão quebrados em uma nova linha, mesmo se sua largura exceder a largura do contêiner.
  • flex-wrap: wrap;: Esta propriedade irá quebrar os itens quando eles excederem a largura do seu contêiner.
  • flex-wrap: wrap-reverse;: Esta propriedade irá envolver os itens flex em ordem reversa.
  • Propriedade flex-flow: Esta propriedade é uma propriedade abreviada para flex-direction e flex-wrap.
<div class="container">
  <div class="box">1</div>
  <div class="box">2</div>
  <div class="box">3</div>
  <div class="box">4</div>
  <div class="box">5</div>
</div>
.container {
  display: flex;
  flex-wrap: wrap;
  width: 150px;
  background: #f0f0f0;
}

.box {
  width: 60px;
  padding: 10px;
  margin: 5px;
  background: skyblue;
  text-align: center;
}

A Propriedade justify-content

  • Definição: Esta propriedade alinha os elementos filhos ao longo do eixo principal do contêiner flexível.
  • justify-content: flex-start;: Neste caso, os itens flex serão alinhados ao início do eixo principal. Isso pode ser horizontal ou vertical.
  • justify-content: flex-end;: Neste caso, os itens flex são alinhados ao final do eixo principal, horizontalmente ou verticalmente.
  • justify-content: center;: Isso centraliza os itens flex ao longo do eixo principal.
  • justify-content: space-between;: Isso distribuirá os elementos uniformemente ao longo do eixo principal.
  • justify-content: space-around;: Isso distribuirá os itens flex de forma uniforme dentro do eixo principal, adicionando um espaço antes do primeiro item e depois do último item.
  • justify-content: space-evenly;: Isso distribuirá os itens uniformemente ao longo do eixo principal.
<div class="container">
  <div class="box">A</div>
  <div class="box">B</div>
  <div class="box">C</div>
</div>
.container {
  display: flex;
  justify-content: space-between;
  background: #eee;
}

.box {
  padding: 20px;
  background: salmon;
}

A Propriedade align-items

  • Definição: Esta propriedade é usada para distribuir itens ao longo do eixo cruzado. Lembre-se que o eixo cruzado é perpendicular ao eixo principal.
  • align-items: center;: Isso é usado para centralizar os itens ao longo do eixo cruzado.
  • align-items: flex-start;: Isso alinha os itens ao início do eixo cruzado.
  • align-items: stretch;: Isso é usado para esticar os itens flex ao longo do eixo cruzado.
<div class="container">
  <div class="box tall">1</div>
  <div class="box">2</div>
  <div class="box">3</div>
</div>
.container {
  display: flex;
  align-items: center;
  height: 150px;
  background: #ddd;
}

.box {
  background: lightgreen;
  padding: 10px;
}

.tall {
  height: 100px;
}