# 弹性盒子(flex) ### flex 简介 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 任一个容器都可以指定为 Flex 布局。 #### 将一个html元素定义为flex 元素 > 使用 display: flex; > > 内联元素使用 display: inline-flex; 示例: ``` .box{ display: flex; } ``` 内联元素: ``` .box{ display: inline-flex; } ``` ### 基本概念 > 采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。 容器内默认存在两根轴 分别是水平的主轴(main axis)和垂直的交叉轴(cross axis) 主轴的开始位置与容器边框的交叉点叫做main start 结束点叫做 main end 交叉轴的开始位置与容器边框的交叉点叫做 cross start 结束位置叫做 cross end 默认容器成员沿主轴排列,单个容器成员占据的空间叫做main-size 单个容器成员占据垂直交叉轴的控件叫做cross-size ![image-20201218164425451](弹性盒子.assets/image-20201218164425451.png) ### 常用属性 - flex-direction:row;/column - flex-wrap - flex-flow - justify-content - align-items - align-content ### 常用属性详解 #### flex-direction ​ 作用: 决定主轴方向 ​ 属性值: - `row`(默认值):主轴为水平方向,起点在左端。 - `row-reverse`:主轴为水平方向,起点在右端。 - `column`:主轴为垂直方向,起点在上沿。 - `column-reverse`:主轴为垂直方向,起点在下沿。 ``` .box { flex-direction: row | row-reverse | column | column-reverse; } ``` ![image-20201218165134275](弹性盒子.assets/image-20201218165134275.png) #### justify-content 作用: 定义了容器成员在主轴方向上的对齐方式 ``` .box { justify-content: flex-start | flex-end | center | space-between | space-around; } ``` ![image-20201218165414077](弹性盒子.assets/image-20201218165414077.png) #### flex-wrap ```css .box{ flex-wrap: nowrap | wrap | wrap-reverse; } ``` 属性值: - nowrap 不换行 ![image-20201218165546847](弹性盒子.assets/image-20201218165546847.png) - wrap 换行 第一行在上方 ![image-20201218165635626](弹性盒子.assets/image-20201218165635626.png) - wrap-reverse :换行,第一行在下方。 ![image-20201218165726666](弹性盒子.assets/image-20201218165726666.png) #### align-item 作用:定义容器成员在交叉轴上的对齐方式 ```css .box { align-items: flex-start | flex-end | center | baseline | stretch; } ``` ![image-20201218170008166](弹性盒子.assets/image-20201218170008166.png) #### align-self 允许单个容器成员拥有与其他成员不一样的对齐方式,可以覆盖align-items属性,默认值为auto