Flexbox é um layout do CSS que permite alinhar elementos de uma
maneira mais flexível do que com a utilização de float ou position.
Flexbox divide o conteúdo em um grid, onde cada item é um
"container" flexível. Os containers podem ser alinhados
horizontalmente e verticalmente com os eixos do flexbox.
Entendendo Os Conceitos Do Flexbox
Flexbox é uma técnica de layout que usa um modelo de caixa para
definir como os elementos são dispostos no espaço disponível.
Permite posicionar os elementos dentro de outro elemento
(container).
Os elementos dentro do container são conhecidos como itens.
Display: Flex
A propriedade display: flex cria um contêiner flexível
que se estende para preencher o espaço disponível no bloco (elemento
pai), e os itens dentro desse contêiner são organizados conforme as
regras do Flexbox.
Item 1
Item 2
Item 3
Display: Inline-Flex
A propriedade display: inline-flex cria um contêiner
flexível que se comporta como um elemento inline. Isso significa que
o contêiner flexível será exibido em linha com outros elementos e
não ocupará a largura total disponível.
Item A
Item B
Item C
Item A
Item B
Item C
Os Eixos Do Flexbox
O Flexbox tem dois eixos principais: o eixo principal e o eixo
transversal. O eixo principal é o eixo ao longo do qual os itens são
distribuídos, enquanto o eixo transversal é perpendicular ao eixo
principal.
Os ítens serão dispostos no leiaute seguindo ou o eixo principal ou o transversal.
Eixo principal (main axis): o eixo principal de um flex container é o eixo primário e ao longo dele são inseridos os flex items. Cuidado: O eixo principal não é necessariamente horizontal; vai depender da propriedade flex-direction.
main-start | main-end: os flex items são inseridos dentro do container começando pelo lado start, indo em direção ao lado end.
Tamanho principal: A largura ou altura de um flex item, dependendo da direção do container, é o tamanho principal do ítem. A propriedade de tamanho principal de um flex item pode ser tanto width quanto height, dependendo de qual delas estiver na direção principal.
Eixo transversal (cross axis): O eixo perpendicular ao eixo principal é chamado de eixo transversal. Sua direção depende da direção do eixo principal.
cross-start | cross-end: Linhas flex são preenchidas com ítens e adicionadas ao container, começando pelo lado cross start do flex container em direção ao lado cross end.
cross size: A largura ou altura de um flex item, dependendo do que estiver na dimensão transversal, é o cross size do íten. A propriedade cross size pode ser tanto a largura quanto a altura do ítem, o que estiver na transversal.
Definindo A Direção Do Flexbox Com A Propriedade Flex-Direction
A propriedade flex-direction define a direção dos itens
ao longo do eixo principal. Os valores podem ser row,
column, row-reverse e
column-reverse.
Quebra de Linhas e Colunas com Flex-Wrap
A propriedade flex-wrap define se os itens devem
quebrar para a próxima linha. Os valores podem ser
nowrap, wrap, e wrap-reverse.
Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Juntando a Propriedade Flex-Direction e Flex-Wrap em Flex-Flow
Você pode combinar flex-direction e
flex-wrap na propriedade flex-flowpara criar layouts mais complexos. O valor padrão é row nowrap. Por exemplo, você pode usar column e wrap para
criar uma coluna que quebra em várias linhas.
Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Alinhando os Elementos no Eixo Principal com Justify-Content
A propriedade justify-content alinha os itens ao longo
do eixo principal. Os valores incluem flex-start, flex-end,
center, space-between, space-around e space-evenly.
Alinhando os Elementos no Eixo Transversal com Align-Items
A propriedade align-items alinha os itens ao longo do
eixo transversal. Os valores podem ser flex-start,
center, flex-end, baseline, e
stretch.
Alinhando as Linhas no Container com Align-Content
A propriedade align-content alinha as linhas do
container. Os valores podem ser flex-start,
center, flex-end,
space-between, space-around, e
stretch. Só tem efeito se o container tiver mais de uma linha.
Controlando os Espaços entre os Itens com Gap
A propriedade gap define o espaço entre os itens em um
container flexível. Pode ser usado para definir a distância entre
linhas e colunas.
Ordenando os Itens Com a Propriedade Order
A propriedade order permite alterar a ordem dos itens
flexíveis. O valor padrão é 0, e valores positivos e negativos podem
ser usados para alterar a ordem de exibição dos itens.
Propriedade Flex-Grow
A propriedade flex-grow define a capacidade de um item
de crescer em relação aos outros itens dentro do mesmo container. O
valor padrão é 0.
Propriedade Flex-Shrink
A propriedade flex-shrink define a capacidade de um
item de encolher quando o espaço é reduzido. O valor padrão é 1.
Propriedade Flex-Basis
A propriedade flex-basis define o tamanho inicial de um item antes do espaço disponível ser distribuído. Pode ser um valor em pixels, porcentagem, ou auto. Aceita também que o valor seja absoluto ou relativo.
Caso seja aplicado flex-basis: 0, o espaço extra em volta do conteúdo não
será considerado. Se definirmos como flex-basis: auto, o espaço extra será
distribuído com base no que definimos na propriedade flex-grow.
Se usarmos a propriedade flex-basis no item, ele irá sobrescrever o valor do
width/height do elemento. Porém, vai respeitar o max-width/max-height definido
para o elemento, assim como o min-width/min-height.
Shorthand Flex
Normalmente, as propriedades flex-grow, flex-shrink e flex-basis
não são usadas de forma individual, mas sim através da propriedade abreviada flex.
Os valores de flex-grow, flex-shrink e flex-basis, são definidos, respectivamente, através da
propriedade flex.
Propriedade Align-Self
A propriedade align-self permite que nós possamos sobrescrever o alinhamento padrão aplicado em todos os itens de forma geral que foi definido pela propriedade align-items.