147 lines
2.8 KiB
Markdown
147 lines
2.8 KiB
Markdown
# 弹性盒子(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
|
||
|