O Flexbox CSS (ou Flexible Box Layout) é um modelo de layout bidimensional que permite organizar elementos em linhas e colunas. Ele foi projetado para simplificar a criação de layouts complexos e resolver muitos dos desafios enfrentados pelos desenvolvedores ao tentar alinhar e distribuir elementos em uma página.
Suporte dos Navegadores
Antes de começarmos, é importante verificar o suporte dos navegadores para o Flexbox. A boa notícia é que o Flexbox CSS é amplamente suportado nos navegadores modernos, incluindo Chrome, Firefox, Safari, Edge e Opera. No entanto, é sempre uma boa prática verificar a compatibilidade com versões mais antigas dos navegadores, se necessário.
Habilitando o Flexbox
Para usar o Flexbox, primeiro precisamos definir um elemento como um “container flex” usando a propriedade display: flex
. Isso estabelece um novo contexto de formatação para os elementos filhos dentro desse container.
.container {
display: flex;
}
Agora que habilitamos o Flexbox, podemos começar a explorar suas propriedades e recursos.
Propriedades do Container
flex-direction
A propriedade flex-direction
define a direção principal do Flexbox, ou seja, a direção em que os itens flexíveis são colocados dentro do container. Existem quatro valores possíveis:
row
(padrão): Os itens são dispostos da esquerda para a direita (LTR) ou da direita para a esquerda (RTL).row-reverse
: O oposto derow
.column
: Os itens são dispostos de cima para baixo.column-reverse
: O oposto decolumn
.
.container {
flex-direction: row; /* Itens dispostos em uma linha */
}
flex-wrap
Por padrão, os itens flexíveis tentam se ajustar em uma única linha. No entanto, podemos alterar esse comportamento usando a propriedade flex-wrap
. Ela controla se os itens devem ser quebrados em várias linhas ou não.
nowrap
(padrão): Os itens permanecem em uma única linha.wrap
: Os itens são quebrados em várias linhas, de cima para baixo.wrap-reverse
: Os itens são quebrados em várias linhas, de baixo para cima.
.container {
flex-wrap: wrap; /* Itens quebram em várias linhas */
}
flex-flow
A propriedade flex-flow
é uma abreviação para flex-direction
e flex-wrap
. Ela define a direção principal e o comportamento de quebra dos itens flexíveis.
.container {
flex-flow: row wrap; /* Itens em uma linha quebrando conforme necessário */
}
justify-content
A propriedade justify-content
controla o alinhamento dos itens flexíveis ao longo do eixo principal (horizontal). Ela distribui o espaço extra quando os itens não ocupam todo o espaço disponível.
flex-start
(padrão): Itens alinhados à esquerda.flex-end
: Itens alinhados à direita.center
: Itens centralizados.space-between
: Espaço igual entre os itens, com o primeiro e último item alinhados nas bordas.space-around
: Espaço igual ao redor de cada item.space-evenly
: Espaço igual entre os itens, incluindo as bordas.
.container {
justify-content: center; /* Itens centralizados horizontalmente */
}
align-items
A propriedade align-items
controla o alinhamento dos itens flexíveis ao longo do eixo transversal (vertical). Ela distribui o espaço extra quando os itens não ocupam todo o espaço disponível.
stretch
(padrão): Os itens são esticados para preencher a altura total do container verticalmente. Isso significa que todos os itens terão a mesma altura, mesmo que seu conteúdo seja menor.flex-start
: Os itens são alinhados ao topo do container.flex-end
: Os itens são alinhados à base do container.center
: Os itens são centralizados verticalmente.baseline
: Os itens são alinhados à linha de base do texto. Isso é útil quando você tem texto em diferentes tamanhos e deseja alinhá-los pela base.
Propriedades que se Aplicam a Cada Item Individual
order
A propriedade order
permite reorganizar a ordem dos itens flexíveis dentro do container. Por padrão, todos os itens têm uma ordem de 0. Podemos usar valores inteiros positivos ou negativos para alterar a ordem.
.item {
order: 2; /* O item será exibido após o primeiro item */
}
Alinhamento Vertical Usando align-self
A propriedade align-self
permite controlar o alinhamento vertical de um item flexível individualmente. Ela substitui o alinhamento definido pelo container.
auto
(padrão): O item herda o alinhamento definido pelo container.flex-start
: O item é alinhado ao topo.flex-end
: O item é alinhado à base.center
: O item é centralizado verticalmente.baseline
: O item é alinhado à linha de base do texto.
.item {
align-self: flex-end; /* O item é alinhado à base */
}
Crescer ou Encolher um Item se Necessário
flex-grow
A propriedade flex-grow
define a capacidade de um item flexível crescer em relação aos outros itens. Ela especifica a proporção em que o espaço extra é distribuído entre os itens.
.item {
flex-grow: 1; /* O item crescerá igualmente com os outros itens */
}
flex-shrink
A propriedade flex-shrink
define a capacidade de um item flexível encolher em relação aos outros itens. Ela especifica a proporção em que o espaço é reduzido quando necessário.
.item {
flex-shrink: 0; /* O item não encolherá */
}
flex-basis
A propriedade flex-basis
define o tamanho inicial de um item flexível antes de considerar o espaço extra ou a redução. Podemos usar valores como comprimentos ou porcentagens.
.item {
flex-basis: 200px; /* O item terá uma largura inicial de 200 pixels */
}
flex
A propriedade abreviada flex
combina flex-grow
, flex-shrink
e flex-basis
em uma única declaração.
.item {
flex: 1 0 200px; /* Crescer, não encolher e largura inicial de 200 pixels */
}
Conclusão
O Flexbox CSS é uma ferramenta poderosa para criar layouts flexíveis e responsivos. Compreender essas propriedades nos permite criar designs complexos de maneira eficiente. Lembre-se de praticar e experimentar diferentes abordagens para aprimorar suas habilidades em Flexbox.
E para você validar seus códigos, você precisará de uma plataforma de host completa. Clique aqui e conheça a Hostinger, a hospedagem de sites com potência de verdade!!!