--- title: flex slug: Web/CSS/flex translation_of: Web/CSS/flex ---
A propriedade flex do CSS, define como um ítem será posicionado para no espaço disponível dentro de seu container.
Esta propriedade é uma abreviação das seguintes propriedades CSS:
<div class="flex-container"> <div class="item auto">auto</div> <div class="item auto">auto</div> <div class="item auto">auto</div> </div> <div class="flex-container"> <div class="item auto">auto</div> <div class="item initial">initial</div> <div class="item initial">initial</div> </div> <div class="flex-container"> <div class="item auto">auto</div> <div class="item auto">auto</div> <div class="item none">none</div> </div> <div class="flex-container"> <div class="item initial">initial</div> <div class="item none">none</div> <div class="item none">none</div> </div> <div class="flex-container"> <div class="item four">4</div> <div class="item two">2</div> <div class="item one">1</div> </div>
* { box-sizing: border-box; } .flex-container { background-color: #F4F7F8; resize: horizontal; overflow: hidden; display: flex; margin: 1em; } .item { margin: 1em; padding: 0.5em; width: 110px; min-width: 0; background-color: #1B5385; color: white; font-family: monospace; font-size: 13px; } .initial { flex: initial; } .auto { flex: auto; } .none { flex: none; } .four { flex: 4; } .two { flex: 2; } .one { flex: 1; }
{{EmbedLiveSample("flex", 1200, 370, "", "", "example-outcome-frame")}}
By default flex items don't shrink below their minimum content size. To change this, set the item's {{cssxref("min-width")}} or {{cssxref("min-height")}}.
/* Propriedades principais */ flex: auto; flex: initial; flex: none; /* Valor único, sem unidade: flex-grow */ flex: 2; /* Valor único, unidade width/height: flex-basis */ flex: 10em; flex: 30%; flex: min-content; /* Dois valores: flex-grow | flex-basis */ flex: 1 30px; /* Dois valores: flex-grow | flex-shrink */ flex: 2 2; /* Três valores: flex-grow | flex-shrink | flex-basis */ flex: 2 2 10%; /* Valores globais */ flex: inherit; flex: initial; flex: unset;
The flex
property may be specified using one, two, or three values.
<number>
: In this case it is interpreted as flex: <number> 1 0
; the <flex-shrink>
value is assumed to be 1 and the <flex-basis>
value is assumed to be 0
.none
, auto
, or initial
.<flex-grow>
. The second value must be one of:
<flex-shrink>
.<flex-basis>
.<flex-grow>
.<flex-shrink>
.<flex-basis>
.initial
width
and height
properties. It shrinks to its minimum size to fit the container, but does not grow to absorb any extra free space in the flex container. This is equivalent to setting "flex: 0 1 auto
".auto
width
and height
properties, but grows to absorb any extra free space in the flex container, and shrinks to its minimum size to fit the container. This is equivalent to setting "flex: 1 1 auto
".none
width
and height
properties. It is fully inflexible: it neither shrinks nor grows in relation to the flex container. This is equivalent to setting "flex: 0 0 auto
".<'flex-grow'>
1
when omitted.<'flex-shrink'>
1
when omitted.<'flex-basis'>
0
must have a unit to avoid being interpreted as a flexibility. Defaults to 0
when omitted.#flex-container { display: flex; flex-direction: row; } #flex-container > .flex-item { 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 |
{{cssinfo}}
{{Compat("css.properties.flex")}}