A flex
propriedade é uma subpropriedade do módulo Layout de caixa flexível.
Esta é a abreviação de flex-grow
, flex-shrink
e flex-basis
. O segundo e o terceiro parâmetros ( flex-shrink
e flex-basis
) são opcionais.
Sintaxe
flex: none | ( ? || ) .flex-item ( /* this */ flex: 1 100px; /* is the same as */ flex-grow: 1; flex-basis: 100px; /* and it leaves the flex-shrink property alone, which would be */ flex-shrink: inherit; /* defaults to 1 */ )
Aqui está o resumo do mapeamento dos valores, dependendo de quantos valores você atribui a eles:
flex: none /* value 'none' case */ flex: /* One value syntax, variation 1 */ flex: /* One value syntax, variation 2 */ flex: /* Two values syntax, variation 1 */ flex: /* Two values syntax, variation 2 */ flex: /* Three values syntax */ flex: inherit
Valores comuns para flex
flex: 0 auto;
Este é o mesmo que flex: initial;
ea abreviação para o valor padrão: flex: 0 1 auto
. Ele dimensiona o item com base em suas width
/ height
propriedades (ou seu conteúdo, se não for definido).
Isso torna o item flexível inflexível quando há algum espaço livre restante, mas permite que ele encolha ao mínimo quando não há espaço suficiente. As habilidades de alinhamento ou auto
margens podem ser usadas para alinhar itens flexíveis ao longo do eixo principal.
flex: automático;
Isso é equivalente a flex: 1 1 auto
. Cuidado, este não é o valor padrão. Ele dimensiona o item com base em seus width
/ height
propriedades, mas faz com que seja totalmente flexível para que eles absorver qualquer espaço extra ao longo do eixo principal.
Se todos os itens são ou flex: auto
, flex: initial
ou flex: none
, qualquer espaço restante depois que os artigos foram dimensionadas serão distribuídos uniformemente para os itens com flex: auto
.
flex: nenhum;
Isso é equivalente a flex: 0 0 auto
. Ele dimensiona o item de acordo com os seus width
/ height
propriedades, mas faz com que seja totalmente inflexível.
Isso é semelhante, flex: initial
exceto que não é permitido encolher, mesmo em uma situação de estouro.
flex:
Equivalente a flex: 1 0px
. Isso torna o item flexível flexível e define a base flexível para zero, resultando em um item que recebe a proporção especificada do espaço restante.
Se todos os itens no flex container usarem esse padrão, seus tamanhos serão proporcionais ao fator de flexibilidade especificado.
Demo
A demonstração a seguir mostra um layout muito simples com o Flexbox graças à flex
propriedade:
Aqui está o pedaço de código relevante:
.header, .footer ( flex: 1 100%; ) .sidebar ( flex: 1; ) .main ( flex: 2; )
Primeiro, autorizamos itens flexíveis a serem exibidos em várias linhas com flex-flow: row wrap
.
Em seguida, dizemos ao cabeçalho e ao rodapé para ocupar 100% da largura atual da janela de visualização, não importa o quê.
E o conteúdo principal e ambas as barras laterais irão compartilhar a mesma linha, compartilhando o espaço restante da seguinte forma: 66% (2 / (1 + 2)) para o conteúdo principal, 33% (1 / (1 + 2)) para a barra lateral .
Suporte para navegador
- (moderno) significa a sintaxe recente da especificação (por exemplo
display: flex;
) - (híbrido) significa uma sintaxe não oficial estranha de 2011 (por exemplo
display: flexbox;
) - (antigo) significa a sintaxe antiga de 2009 (por exemplo
display: box;
)
cromada | Safári | Raposa de fogo | Ópera | IE | Android | iOS |
---|---|---|---|---|---|---|
21+ (moderno) 20- (antigo) | 3.1+ (antigo) | 2-21 (antigo) 22+ (novo) | 12,1+ (moderno) | 10+ (híbrido) | 2.1+ (antigo) | 3.2+ (antigo) |
O navegador Blackberry 10+ suporta a nova sintaxe.
Para obter mais informações sobre como misturar sintaxes para obter o melhor suporte de navegador, consulte este artigo (CSS-Tricks) ou este artigo (DevOpera).