Domine o Flexbox: A Solução CSS para Layouts Flexíveis e Responsivos

Postado Por:

Categoria:

Postado em:

Domine o Flexbox: A Solução CSS para Layouts Flexíveis e Responsivos

Aprenda a criar designs modernos e adaptáveis com o poder do Flexbox

O Flexbox, ou Flexible Box, é uma poderosa funcionalidade do CSS que permite organizar, alinhar e distribuir elementos dentro de um contêiner de forma eficiente e flexível. Com o Flexbox, é muito mais fácil controlar o tamanho e o alinhamento dos itens, tanto vertical quanto horizontalmente, facilitando a criação de layouts dinâmicos e responsivos.

Para utilizá-lo, é importante entender que o Flexbox envolve duas categorias principais de propriedades: aquelas que se aplicam ao contêiner (o elemento pai) e aquelas que afetam diretamente os itens dentro dele (os elementos filhos). Cada uma dessas propriedades desempenha um papel crucial na definição do comportamento e na disposição dos itens dentro do layout, permitindo um controle preciso sobre a apresentação visual de seus elementos.

.porto-u-1678.porto-u-heading{text-align:left}

Container

Neste primeiro post veremos as propriedades que ficam no elemento pai dos nossos itens, o container. Teremos basicamente um container com três itens dentro.

.porto-u-2938.porto-u-heading{text-align:left}
<div class="container">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</div>
        

display

Primeiro precisamos definir que o nosso container é do tipo “flex”; Fazemos isso com a propriedade “display”. No exemplo abaixo, utilize o checkbox para ligar/desligar o Flexbox.

.porto-u-4404.porto-u-heading{text-align:left}


flex-direction

Indica a direção dos itens, definindo o que vamos chamar de eixo principal (main-axis).

  • row (padrão): da esquerda para direita
  • row-reverse: inverso de row
  • column: de cima para baixo
  • column-reverse: inverso de column
.porto-u-7707.porto-u-heading{text-align:left}


flex-wrap

O comportamento padrão dos itens de um elemento flex é ficar em uma única linha. Se a largura total de todos os itens for maior do que o espaço disponível, os itens continuarão na mesma linha.

Esta propriedade permite que os itens sejam jogados em outra linha caso não haja mais espaço na linha.

  • nowrap (padrão): todos os itens ficam em uma única linha
  • wrap: os itens que não cabem na linha são jogados para baixo
  • wrap-reverse: os itens que não cabem na linha são jogados para cima

.porto-u-6285.porto-u-heading{text-align:left}


flex-flow

Esta propriedade é apenas um atalho para flex-direction e flex-wrap, nos permitindo declarar o valor de ambos em uma única propriedade.

.porto-u-1369.porto-u-heading{text-align:left}
.container{
    display: flex;
    flex-flow: row wrap;
}

justify-content

Define o alinhamento dos itens ao longo do eixo principal.

  • flex-start (padrão): os itens ficam junto no começo da linha
  • flex-end: os itens ficam juntos no final da linha
  • center: os itens ficam centralizados na linha
  • space-between: os itens são distribuídos igualmente no espaço disponível. O primeiro item fica no começo da linha e o último fica no final.
  • space-around: os itens são distribuídos igualmente no espaço disponível ao redor deles.
  • space-evenly: os itens são distribuídos igualmente no espaço disponível.
.porto-u-6250.porto-u-heading{text-align:left}


flex-direction: column

Lembre-se que esta propriedade alinha os itens em relação ao eixo principal. Isso significa que se você mudar o valor de flex-direction, a direção do posicionamento será outra.

.porto-u-6062.porto-u-heading{text-align:left}

align-items

Define o alinhamento dos itens perpendicularmente em relação ao eixo principal. Pense nele como um justify-content, mas que alinhará os itens no outro eixo.

  • stretch (padrão): estica os elementos para preencherem o container.
  • flex-start: os itens ficam junto no começo do eixo perpendicular
  • flex-end: os itens ficam juntos no final do eixo perpendicular
  • center: os itens ficam centralizados no eixo perpendicular
  • baseline: parecido com o center, mas usando a base da linha como referência. No exemplo abaixo, note como os textos dos itens ficam alinhados.
.porto-u-9883.porto-u-heading{text-align:left}

flex-direction: column

Lembre-se que esta propriedade alinha os itens em relação ao eixo principal. Isso significa que se você mudar o valor de flex-direction, a direção do posicionamento será outra.

align-content

Alinha as linhas do container. Por alinhar as linhas, esta propriedade só tem efeito quando há mais de uma linha.

  • stretch (padrão): estica as linhas para preencherem o espaço restante.
  • flex-start: as linhas ficam juntas no começo do container
  • flex-end: as linhas ficam juntas no final do container
  • center: as linhas ficam centralizadas no container
  • space-between: as linhas são distribuídas igualmente. A primeira linha fica no começo do container e a última fica no final.
  • space-around: as linhas são distribuídas igualmente no espaço disponível ao redor delas.

flex-direction: column

Lembre-se que esta propriedade alinha os itens em relação ao eixo principal. Isso significa que se você mudar o valor de flex-direction, a direção do posicionamento será outra.

Playground

Para testar, brinque um pouco com cada uma das propriedades para ver as possibilidades:

.porto-u-2532.porto-u-heading{text-align:left}

Referências:

CSS:

Flexbox:

Esses links direcionam para as documentações mais completas e confiáveis sobre CSS e Flexbox, oferecendo informações detalhadas e exemplos práticos.

.porto-u-4014.porto-u-heading{text-align:left}

Deixe seu comentário

Posts RELACIONADOS