> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# flex 布局

## Flex 弹性盒子布局

- 任何一个容器都可以指定 **Flex** 布局

```css title="CSS"
.box {
    /* 兼容Safari */
    display: -webkit-flex;
    display: flex;
}
```

注：**Webkit** 内核的浏览器，必须加上 **-webkit-** 前缀。

- 行内元素也可以使用**Flex**布局

```css title="CSS"
.box {
    display: inline-flex;
}
```

:::warning 注意
父元素设为**Flex 布局**后，子元素的 **float**、**clear** 和 **vertical-align** 属性将不起作用。

容器默认两根轴：**主轴**【横轴】(main axis) 和 **交叉轴**【纵轴】(**cross axis**)，项目默认沿主轴排列。
:::

![flexbox.png](/static/image/5-1.b0d835c2c6.png)
## 容器（flex container）属性

### 1、flex-direction

- 属性：决定主轴的方向（即项目的排列方式）
- **row**（默认值）：主轴方向为水平方向，起点在左端。
- **row-reverse**：主轴方向为水平方向，起点在右端。
- **column**：主轴方向为垂直方向，起点在顶端。
- **column-reverse**：主轴方向为垂直方向，起点在底端。

```css title="CSS"
.box {
    /* 1、默认：→ 向右 */
    flex-direction: row;
}

.box {
    /* 2、← 向左 */
    flex-direction: row-reverse;
}

.box {
    /* 3、↓ 向下，起点在上 */
    flex-direction: column;
}

.box {
    /* 4、向上，起点在下 */
    flex-direction: column-reverse;
}
```

**示意图：**

![flexbox.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxwAAADLBAMAAAAW+ogxAAAAMFBMVEX////ogCREcLfzv5Fxk8hylMmKptJOeLvc5PLQ2+3z9vtlisSht9u4yeT538h9nM1MGng0AAAEWklEQVR42uzdMW4TQRiG4UVBKCCC4AojtCnQSkhcwRIFBZWhoFlxhFRbpnNBwxF8gzTQuOIIPgJHIYkt/2g8UrKeX+NvPe/bWlqLefRBHK9NQ0RERERERERERPTozj4kk7leZT15k0zmepUFh1RwSAWHVHBIBYdUcEgFh1RwSAWHVHBIBYdUcEgFh1RwSAWHVHBIBYdUcEgFh1RwSAWHVHBIBYdUcEgFh1RwSPXo4/tx7Xi9p+Gutw0dyHF+NcCRkTPHIlxew5GoKIeNI4QBjnTlORYh3M4DjkQlOWwctw1wxBXmsHHczwOOqLIcNo77BjiiynLYOLbzgCOqJIeNY9sAR1RJDhvHbh5wRJXjsHHsGuCIKshh47B5wBFVjMPGYQ1wRBXksHHYPOCIKsZh47AGOKIKctg4bB5wZJT1lS42Dms45HpwZGfjiOcxPjhcsnFYAxzFs3Ek5gFH4WwciQY4jtPNbNPHzSxmmz4v4chI7+96OKSODw6p44ND6vjgkDo+OKSODw6p44ND6vjgkDo+OKSODw6p44ND6vjg8HgzlTvY4+A46eCQCg6pKuB40Ti3bP4LjpE97xvXnv1sLDhGc7SNa9/hyOIIves4Ahx5HK3rOODI5Ai95zjgyOVoHccBRzZH6P3GAUc+R+s2DjgcOELvNQ44PDhap3HA4cIRep9xwOHD0bmMAw4njrD2GAccXhydwzjgcOMI6/xxwOHH0WWPA464i/novgWbh8c4wu/56NYnyvEyHF6XO47D+wPHfuu8ccDhy9FljQMOZ46wzhkHHN4cXcY44HDkyP0Z9SLA4c7Rsg4ljp5/O4Q4Wn6yUuLoed0hxNHyqtyb42I2uk/ROLLn8Ws2ulP9nVXGb3RbfqOrxNHzfocQR8u7gUocPe+VC3G03EmixMF9Vkoc3IUoxcE9ukoc3MEuxcHnO5Q4JvPppwq+sWdKnw2sgmM6n5ytgmM6nyuvgWNC37pQA8eEvpOkAo4pfWNPBRynFxxSwSEVHFLBIRUcUsEhFRxSwSEVHFLB4Zfr/y/uf738i75KP/y32ZZ++L3i807izdkHLnqWfnj3504//FrxeeGQel44pJ4XDqnnLctxM9/0Ndx1Od/0ZSl3LHVwnF+FRCu9Y6mDo1kkNN4t9Y6lEo7UPFaCx1IJR7NIjEPwWGrh2J/HSvFYauFoFnvjUDyWajjieax43XE0DpuHjQOOo3Ck57HiVfm/du7kBmEgCKJoH4mXGJAmDeLo6Ng3Xwd56vB+ACD1U11syWs5avyMA8dCju082jOr1Rw1vsaBYznHZx7tie56jhrvceAI4HjNo73vSOCo8RwHjgiOxzza28AMjhr3ceAI4bjNowtHCEeN6zhwxHAcjl04YjjqdMYxcb75y23DgQMHDhw4cODAgQMHDhw4Qs6CI+osOKLOgiPqLDiizoIj6iw4os6CI+osO/zvxCddNv3r93wiRpIkSZIkSZIkSZK0Rxdh5OGonVh8eAAAAABJRU5ErkJggg==)
### 2、flex-wrap

- 属性：决定在同一轴线上排列的项目是否换行

**示意图：**

![w0.png](data:image/png;base64,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)
**属性值：**

- **nowrap**（默认）：不换行。
- <img alt="w1.png" src={image3} />
- **wrap**：换行，第一行在上方。
- <img alt="w2.jpg" src={image4} />
- **wrap-reverse**：换行，第一行在下方。
- <img alt="w3.jpg" src={image5} />

```css title="CSS"
.box {
    /* 1、不换行（默认） */
    flex-wrap: nowrap;
}

.box {
    /* 2、换行 */
    flex-wrap: wrap;
}

.box {
    /* 3、换行，第一行在下 */
    flex-wrap: wrap-reverse;
}
```

### 3、flex-flow

- 属性：flex-direction 和 flex-wrap 的简写形式，默认值：row nowrap

```css title="CSS"
.box {
    flex-flow: row nowrap;
    flex-flow: row wrap;
    flex-flow: row wrap-reverse;
}

.box {
    flex-flow: row-reverse nowrap;
    flex-flow: row-reverse wrap;
    flex-flow: row-reverse wrap-reverse;
}

.box {
    flex-flow: column nowrap;
    flex-flow: column wrap;
    flex-flow: column wrap-reverse;
}

.box {
    flex-flow: column-reverse nowrap;
    flex-flow: column-reverse wrap;
    flex-flow: column-reverse wrap-reverse;
}
```

### 4、justify-content

- 属性：定义项目在主轴上的对齐方式

属性值：

- **flex-start**（默认值）：左对齐。
- **flex-end**：右对齐。
- **center**：居中。
- **space-between**：两端对齐，项目之间的间隔都相等。
- **space-around**：每个项目两侧的间隔相等，所以项目之间的间隔比项目与边框的间隔大一倍。

```css title="CSS"
.box {
    justify-content: flex-start;
}

.box {
    justify-content: flex-end;
}

.box {
    justify-content: center;
}

.box {
    justify-content: space-between;
}

.box {
    justify-content: space-around;
}
```

**示意图：**

![w0.png](/static/image/5-7.21bdb382a5.png)
### 5、align-items

- 属性：定义项目在交叉轴上的对齐方式

属性值：

- **flex-start**：交叉轴起点对齐。
- **flex-end**：交叉轴终点对齐。
- **center**：交叉轴中点对齐。
- **baseline**：项目的第一行文字的基线对齐。
- **stretch**（默认值）：若项目未设置高度或设置为 **auto** 将占满这个容器的高度。

```css title="CSS"
.box {
    align-items: flex-start;
}

.box {
    align-items: flex-end;
}

.box {
    align-items: center;
}

.box {
    align-items: baseline;
}

.box {
    align-items: stretch;
}
```

**示意图：**

![w0.png](/static/image/5-8.3c411dc987.png)
### 6、align-content

- 属性：定义多根轴线的对齐方式，若只有一根轴线，则该属性不起作用

属性值：

- **flex-start**：与交叉轴起点对齐。
- **flex-end**：与交叉轴终点对齐。
- **center**：与交叉轴中点对齐。
- **space-between**：与交叉轴两端对齐，轴线之间的间隔平均分布。
- **space-around**：每根轴线两侧的间隔都相等，所以轴线之间的间隔比轴线与边框的间隔大一倍。
- **stretch**（默认值）：轴线占满整个交叉轴。

```css title="CSS"
.box {
    align-content: flex-start | flex-end | center | space-between | space-around
        | stretch;
}
```

**示意图：**

![w0.png](/static/image/5-9.d0b63a0c42.png)