Como todos sabemos, a flex
propriedade é um atalho para o flex-grow
, flex-shrink
e as flex-basis
propriedades. Seu valor padrão é 0 1 auto
, o que significa
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
mas eu notei que em muitos lugares flex: 1
é usado. É uma abreviação de 1 1 auto
ou 1 0 auto
? Não consigo entender o que isso significa e não recebo nada quando busco no Google.
Respostas:
Aqui está a explicação:
https://www.w3.org/TR/css-flexbox-1/#flex-common
Portanto,
flex:1
é equivalente aflex: 1 1 0
fonte
flex
a todas as crianças, o que realmente importa éflex: 1 ? 0;
onde "?" pode ser qualquer coisa, não fará diferençawhat does flex:1 mean?
está aberto à interpretação. O op não pede as especificações, apenas o que está acontecendo. Infelizmente, o Chrome agora é o navegador mais popular e é necessário suporte. Eu não sou fã ou usuário do Chrome!flex: 1
significa o seguinte:fonte
flex: 1
significa1 1 0
... mas no IE é #1 1 0px
1 1 0
e1 1 0px
é equivalente. O IE apenas suporta o que possui uma unidade.1 1 0px
e1 1 0
é equivalente?flex-basis
, o conteúdo é ignorado e o tamanho do elemento é baseado em seuflex-grow
/flex-shrink
.SEJA CUIDADOSO
Em alguns navegadores:
flex:1;
não é igualflex:1 1 0;
flex:1;
=flex:1 1 0n;
(onde n é uma unidade de comprimento).O ponto principal aqui é que a base flexível requer uma unidade de comprimento .
No Chrome, por exemplo,
flex:1
eflex:1 1 0
produz resultados diferentes. Na maioria das circunstâncias, pode parecer queflex:1 1 0;
está funcionando, mas vamos examinar o que realmente acontece:EXEMPLO
A base flexível é ignorada e apenas a flexão e contração flexíveis são aplicadas.
flex:1 1 0;
=flex:1 1;
=flex:1;
Isso pode parecer à primeira vista ok, no entanto, se a unidade aplicada do contêiner estiver aninhada; espere o inesperado!
Experimente este exemplo em CHROME
COMPATIBILIDADE
Deve-se notar que isso falha porque alguns navegadores não aderiram à especificação .
Navegadores que usam a especificação flexível completa:
ATUALIZAR 2019
As versões mais recentes do Chrome parecem ter finalmente corrigido esse problema, mas outros navegadores ainda não o fizeram.
Testado e funcionando no Chrome Ver 74.
fonte
flex: 1
é o mesmo queflex: 1 1 0
. No seu exemplo, se você remover a.Wrap
classe na.Flex110x,.Flex1, .Flex110, .Wrap
regra, funcionará conforme o esperado.flex:1 1 0n;