--- title: flex slug: Web/CSS/flex translation_of: Web/CSS/flex ---
La propiedad CSS flex es una propiedad resumida que indica la capacidad de un elemento flexible para alterar sus dimensiones y llenar el espacio disponible. Los elementos flexibles pueden ser estirados para utilizar el espacio disponible proporcional a su factor de crecimiento flexible o su factor de contracción flexible para evitar desbordamiento.
{{cssinfo}}
Consulte Cómo usar las cajas flexibles de CSS para conocer más propiedades e información.
/* 0 0 auto */ flex: none; /* Un valor, número sin unidades: flex-grow */ flex: 2; /* Un valor, width/height: flex-basis */ flex: 10em; flex: 30px; flex: auto; flex: content; /* Dos valores: flex-grow | flex-basis */ flex: 1 30px; /* Dos valores: flex-grow | flex-shrink */ flex: 2 2; /* Tres valores: flex-grow | flex-shrink | flex-basis */ flex: 2 2 10%; /* Valores globales */ flex: inherit; flex: initial; flex: unset;
<'flex-grow'>
Define el flex-grow del elemento flexible. Ver { { Xref_cssnumber ( ) } } para obtener más detalles . Los valores negativos no se consideran válidos . El valor predeterminado es 1 cuando se omite.
<'flex-shrink'>
flex-shrink
del elemento flexible. Ver { { Xref_cssnumber ( ) } } para obtener más detalles . Los valores negativos no se consideran válidos . El valor predeterminado es 1 cuando se omite.<'flex-basis'>
flex-basis
del elemento flexible. Se acepta cualquier valor válido para las propiedades width
y height
. Un tamaño preferente de 0 debe tener una unidad para evitar ser interpretado como flexible. El valor predeterminado es 0% cuando se omite.none
0 0 auto
.#flex-container { display: -webkit-flex; display: flex; -webkit-flex-direction: row; flex-direction: row; } #flex-container > .flex-item { -webkit-flex: auto; flex: auto; } #flex-container > .raw-item { width: 5rem; }
<div id="flex-container"> <div class="flex-item" id="flex">Flex box (click to toggle raw box)</div> <div class="raw-item" id="raw">Raw box</div> </div>
var flex = document.getElementById("flex"); var raw = document.getElementById("raw"); flex.addEventListener("click", function() { raw.style.display = raw.style.display == "none" ? "block" : "none"; });
#flex-container { width: 100%; font-family: Consolas, Arial, sans-serif; } #flex-container > div { border: 1px solid #f00; padding: 1rem; } #flex-container > .raw-item { border: 1px solid #000; }
{{EmbedLiveSample('Example','100%','60')}}
Specification | Status | Comment |
---|---|---|
{{SpecName('CSS3 Flexbox', '#flex-property', 'flex')}} | {{Spec2('CSS3 Flexbox')}} | Initial definition |
{{CompatibilityTable()}}
Feature | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{CompatGeckoDesktop("18.0")}}[1] {{CompatGeckoDesktop("20.0")}} {{CompatGeckoDesktop("28.0")}}[2] |
21.0{{property_prefix("-webkit")}} 29.0 |
10.0{{property_prefix("-ms")}}[3] 11.0[3] |
12.10 |
6.1{{property_prefix("-webkit")}} |
Feature | Firefox Mobile (Gecko) | Android | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | {{CompatUnknown()}} | 4.4 | 11 | 12.10 | 7.1{{property_prefix("-webkit")}} |
[1] En Gecko 18.0 {{geckoRelease("18.0")}} y 19.0 {{geckoRelease("19.0")}} el soporte de cajas flexibles está oculto en las preferencias about:config
en layout.css.flexbox.enabled
, por defecto en false
.
[2] Las cajas flexibles multi-línea están soportadas desde Gecko 28.0 {{geckoRelease("28.0")}}.
[3] Internet Explorer 10-11 (pero no 12+) ignora el uso de calc()
en la parte flex-basis
de la sintaxis de flex. Esto se puede solucionar mediante el uso de las propiedades normales en lugar de las abreviadas. Ver Flexbug #8 para más info. Además una declaración flex
con un valor sin unidad en su parte flex-basis
es considerado sintácticamente no valido en esas versiones y por lo tanto será ignorado. Una solución consiste en incluir siempre una unidad en la parte flex-basis
del valor abreviador flex
. Ver Flexbug #4 para más info.