-
Notifications
You must be signed in to change notification settings - Fork 1
Introdução ao Flexbox
Guias sobre Flexbox:
- A Complete Guide to Flexbox - CSS Tricks
- Flex Shorthand - CSS Tricks
- A Visual Guide to CSS3 Flexbox Properties - Scotch.io
flex-grow
is weird. Or is it? - CSS Tricks
.class {
display: flex;
/* flex | inline-flex */
}
- Flex direction
- Propriedade flex container.
Define não só a direção do conteúdo, se em linhas ou colunas, mas o arranjo dos eixos Main e Cross. Por padrão, o valor de flex-direction
é row
, com o Main Axis na horizontal (esq-dir) e o Cross Axis na vertical(cima-baixo). Se o valor for column
, então o MA passa a ser na vertical (cima-baixo) e o CA na horizontal (esq-dir).
Isso é muito importante porque afeta o funcionamento das outras propriedades, principalmente justify-content
e align-items
.
.class {
display: flex;
flex-direction: row;
/* row* | row-reverse | column | column-reverse */
}
- Flex wrap
- Propriedade flex container.
.class {
display: flex;
flex-wrap: wrap;
/* wrap | nowrap* | wrap-reverse */
}
- Documentação MDN
- Propriedade flex container.
É responsável por alinhar os itens no Main Axis.
.class {
display: flex;
justify-content: ;
/* center | flex-end | flex-start* | space-around | space-between */
}
- Documentação MDN
- Propriedade flex container.
É responsável por alinhar os itens no Cross Axis.
.class {
display: flex;
align-items: ;
/* flex-end | flex-start | center | baseline | stretch* */
}
- Documentação MDN
- Propriedade flex item.
.item-x {
order: 0 ;
/* integer | default: 0 */
}
- Documentação MDN
- CSS-Tricks
- Propriedade flex item.
flex-grow determines how much of the available space inside the flex container an item should take up; it assigns more or less space to flex items.
.item-x {
flex-grow: 1;
/* 0* | 1 | positive integer */
}
- documentação MDN
- Propriedade flex item.
Define o tamanho mínimo de um flex item.
.item-x {
flex-basis: 100px;
/* 0* | positive integer */
}
- documentação MDN
- Propriedade flex item.
Define o tamanho mínimo de um flex item.
.item-x {
flex: 1 1 20px;
/* flex-grow | flex-shrink | flex-basis */
}
- Documentação MDN
- Propriedade flex item.
É responsável pelo alinhamento vertical (cross axis) de um flex item específico.
Com apenas .flex-container { display: flex; }
:
- flex-items não expandem em
flex-direction: row
, a não ser comflex: 1
ouwidth: 100%
. - flex-items ocupam todo o espaço em
flex-direction: column
, mesmo sem as propriedadesflex
ouwidth
do item anterior. Isso porque não é só a direção do empilhamento dos flex-items que muda, e sim toda a direção do flex container. Omain axis
passa a ser na vertical (cima-baixo) e ocross axis
na horizontal(esq-dir), assim como o size, start e end de cada eixo. Além disso, o padrão de align-items é stretch, e é isso que faz flex-items em column ocuparem todo o espaço horizontal (cross axis). - Por ocuparem todo o espaço por padrão,
justify-content
não parece ter efeito quandoflex-direction: column
. - Se um flex-item precisar de mais espaço que outros em um mesmo container (ex: possui muito mais texto), os outros flex-items irão ser reduzidos para utilizar apenas o espaço necessário. Por padrão, os outros flex-items serão esticados na vertical para preencher o espaço do flex-container.
- Isso acontece porque o valor padrão de
align-items
éstretch
. -
align-content
é comojustify-content
, mas para ocross axis
. Por isso serve apenas quando há espaço vertical sobrando nocross axis
. Então é possível que só seja útil se houver uma declaração explicita de tamanho para o flex-container, além deflex-wrap: wrap
. - No caso anterior, para qualquer valor de align-items que não seja o padrão (stretch) os elementos não ocuparão todo o espaço, naturalmente.
- Por padrão, se não houver espaço suficiente para os flex-items em uma linha, eles "quebrarão" o container. Eles, porém, nunca ficarão pequenos o suficiente a ponto de "cortar" o conteúdo interno.
.container {
display: flex;
min-height: 50vh;
justify-content: center;
align-items: center;
}
.container {
display: flex;
min-height: 50vh;
justify-content: center;
}
.item {
align-self: center;
}
.container {
display: flex;
min-height: 50vh;
}
.item {
margin: auto;
}