Comme nous le savons tous, la flex
propriété est un raccourci pour la flex-grow
, flex-shrink
et les flex-basis
propriétés. Sa valeur par défaut est 0 1 auto
, ce qui signifie
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
mais j'ai remarqué, dans de nombreux endroits flex: 1
est utilisé. Est-ce un raccourci pour 1 1 auto
ou 1 0 auto
? Je ne comprends pas ce que cela signifie et je n'obtiens rien lorsque je cherche sur Google.
Réponses:
Voici l'explication:
https://www.w3.org/TR/css-flexbox-1/#flex-common
Par conséquent
flex:1
équivaut àflex: 1 1 0
la source
flex
à tous les enfants, ce qui compte vraimentflex: 1 ? 0;
, c'est où "?" peut être n'importe quoi, cela ne fera aucune différencewhat does flex:1 mean?
est cependant ouvert à interprétation. L'op ne demande pas la spécification, seulement ce qui se passe. Malheureusement, Chrome est désormais le navigateur le plus populaire et une assistance est requise. Je ne suis ni fan ni utilisateur de Chrome moi-même!flex: 1
signifie ce qui suit:la source
flex: 1
veut dire1 1 0
... mais sur IE c'est le cas1 1 0px
1 1 0
et1 1 0px
sont équivalentes. IE ne prend en charge que celui avec une unité.1 1 0px
et1 1 0
sont équivalents?flex-basis
, le contenu est ignoré et la taille de l'élément est basée sur sonflex-grow
/flex-shrink
.FAITES ATTENTION
Dans certains navigateurs:
flex:1;
ne pas égalerflex:1 1 0;
flex:1;
=flex:1 1 0n;
(où n est une unité de longueur).Le point clé ici est que la base flexible nécessite une unité de longueur .
Dans Chrome par exemple
flex:1
etflex:1 1 0
produire des résultats différents. Dans la plupart des cas, il peut sembler que celaflex:1 1 0;
fonctionne, mais examinons ce qui se passe réellement:EXEMPLE
La base Flex est ignorée et seuls flex-grow et flex-shrink sont appliqués.
flex:1 1 0;
=flex:1 1;
=flex:1;
Cela peut à première vue sembler correct si l'unité appliquée du conteneur est imbriquée; attendez-vous à l'inattendu!
Essayez cet exemple dans CHROME
COMPATIBILITÉ
Il convient de noter que cela échoue car certains navigateurs n'ont pas respecté la spécification .
Navigateurs utilisant la spécification flex complète:
MISE À JOUR 2019
Les dernières versions de Chrome semblent avoir finalement résolu ce problème, mais d'autres navigateurs ne l'ont toujours pas fait.
Testé et fonctionnant dans Chrome Ver 74.
la source
flex: 1
c'est la même choseflex: 1 1 0
. Dans votre exemple, si vous supprimez la.Wrap
classe dans la.Flex110x,.Flex1, .Flex110, .Wrap
règle fonctionne comme prévu.flex:1 1 0n;