Como todos sabemos, la flex
propiedad es una abreviatura para el flex-grow
, flex-shrink
y las flex-basis
propiedades. Su valor predeterminado es 0 1 auto
, lo que significa
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
pero he notado que en muchos lugares flex: 1
se usa. ¿Es una abreviatura de 1 1 auto
o 1 0 auto
? No puedo entender lo que significa y no obtengo nada cuando busco en Google.
Respuestas:
Aquí está la explicación:
https://www.w3.org/TR/css-flexbox-1/#flex-common
Por
flex:1
lo tanto es equivalente aflex: 1 1 0
fuente
flex
a todos los niños, lo que realmente importa esflex: 1 ? 0;
dónde "?" puede ser cualquier cosa, no hará ninguna diferenciawhat does flex:1 mean?
está abierto a interpretación. La operación no pide especificaciones, solo lo que está sucediendo. Desafortunadamente, Chrome es ahora el navegador más popular y se requiere soporte. ¡Yo mismo no soy fan ni usuario de Chrome!flex: 1
significa lo siguiente:fuente
flex: 1
significa1 1 0
... pero en IE lo es1 1 0px
1 1 0
y1 1 0px
son equivalentes. IE simplemente es compatible con el que tiene una unidad.1 1 0px
y1 1 0
son equivalentes?flex-basis
, el contenido se ignora y el tamaño del elemento se basa en suflex-grow
/flex-shrink
.TEN CUIDADO
En algunos navegadores:
flex:1;
no es igualflex:1 1 0;
flex:1;
=flex:1 1 0n;
(donde n es una unidad de longitud).El punto clave aquí es que la base flexible requiere una unidad de longitud .
En Chrome por ejemplo
flex:1
yflex:1 1 0
producir resultados diferentes. En la mayoría de las circunstancias, puede parecer queflex:1 1 0;
está funcionando, pero examinemos lo que realmente sucede:EJEMPLO
La base flexible se ignora y solo se aplican flex-grow y flex-shrink.
flex:1 1 0;
=flex:1 1;
=flex:1;
Sin embargo, esto puede parecer correcto a primera vista si la unidad aplicada del contenedor está anidada; ¡esperar lo inesperado!
Prueba este ejemplo en CROMO
COMPATIBILIDAD
Cabe señalar que esto falla porque algunos navegadores no han cumplido con la especificación .
Navegadores que utilizan la especificación flexible completa:
ACTUALIZACIÓN 2019
Las últimas versiones de Chrome parecen haber solucionado finalmente este problema, pero otros navegadores aún no lo han hecho.
Probado y funcionando en Chrome Ver 74.
fuente
flex: 1
es lo mismo queflex: 1 1 0
. En su ejemplo, si elimina la.Wrap
clase en la.Flex110x,.Flex1, .Flex110, .Wrap
regla, funciona como se esperaba.flex:1 1 0n;