flex

Introduction

The flex CSS shorthand property sets how a flex item will grow or shrink to fit the space available in its flex container. This property is a shorthand for the following CSS properties: flex-grow, flex-shrink, flex-basis.

Examples

Syntax

flex: none;
flex: auto;

/* One value, unitless number: flex-grow
flex-basis is then equal to 0. */
flex: 2;

/* One value, width/height: flex-basis */
flex: 10em;
flex: 30%;

/* Two values: flex-grow | flex-basis */
flex: 1 30px;

/* Two values: flex-grow | flex-shrink */
flex: 2 2;

/* Three values: flex-grow | flex-shrink | flex-basis */
flex: 2 2 10%;

The flex property may be specified using one, two, or three values.

  • One-value syntax:

    • A unitless <number>, which will be used as the value of <flex-grow>, then the shorthand expands to flex: <flex-grow> 1 0.
    • A valid <length> or <percentage> or key word auto, it will be used as the value of <flex-basis>, then the shorthand expands to flex: 1 1 <flex-basis>.
  • Two-value syntax:

    • The first value must be a valid value for <flex-grow>.
    • The second value must be one of:
      • A unitless <number>, which will be used as the value of <flex-shrink>, then the shorthand expands to flex: <flex-grow> <flex-shrink> 0.
      • A valid <length> or <percentage> or key word auto, it will be used as the value of <flex-basis>, then the shorthand expands to flex: <flex-grow> 1 <flex-basis>.
  • Three-value syntax: the values must be in the following order:

Values

  • 0 1 auto

    Default value. The item is sized according to its 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.

  • auto

    The item is sized according to its 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

    The item is sized according to its 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>

    Defines the flex-grow of the flex item. Negative values are considered invalid. Defaults to 1 when omitted.

  • <flex-shrink>

    Defines the flex-shrink of the flex item. Negative values are considered invalid. Defaults to 1 when omitted.

  • <flex-basis>

    Defines the flex-basis of the flex item. A preferred size of 0 must have a unit to avoid being interpreted as a flexibility. Defaults to auto when omitted. (initial is auto)

Formal definition

Initial valueas each of the properties of the shorthand:
  • flex-grow: 0
  • flex-shrink: 1
  • flex-basis: auto
Applies toflex items
Inheritedno
Animatable

Formal syntax

flex =
  none                                                |
  [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]

<flex-grow> =
  <number [0,∞]>

<flex-shrink> =
  <number [0,∞]>

<flex-basis> = <'width'>

<width> =
  auto                                      |
  <length-percentage [0,∞]>                 |
  max-content                               |
  fit-content( <length-percentage [0,∞]> )

<length-percentage> =
  <length>      |
  <percentage>

Compatibility

LCD tables only load in the browser

Except as otherwise noted, this work is licensed under a Creative Commons Attribution 4.0 International License, and code samples are licensed under the Apache License 2.0.