webveuje/csspress/4.flex.md

191 lines
4.3 KiB
Markdown
Raw Normal View History

2021-01-05 09:18:22 +08:00
# flex
flex 意为弹性盒子,用来为盒模型提供最大的灵活性
### flex 使用
任何一个元素都能被指定为flex 容器
```
2021-03-23 10:58:10 +08:00
display:flex 选中元素为块级元素时
2021-01-05 09:18:22 +08:00
2021-03-23 10:58:10 +08:00
display:inline-flex 选中元素为内联元素时
2021-01-05 09:18:22 +08:00
```
### 基本概念
通过display:flex 定义的元素称为容器,他包含的元素是容器成员,称为”项目“
容器默认存在两个轴,水平主轴和垂直的交叉轴
水平主轴的起点叫做 main start 结束位置叫做 main end
垂直交叉轴的起点叫做 cross start 结束位置叫做 cross end
2021-01-20 18:33:56 +08:00
注: 容器的主轴和侧轴是由 flex-direction 确定的 默认主轴是水平row
当 flex-direction 的值为column时 主轴为竖直 侧轴为水平
2021-03-23 10:58:10 +08:00
![image-20210222165013291](\4.flex.assets\image-20210222165013291.png)
![image-20210120143705542](\4.flex.assets\image-20210120143705542.png)
2021-01-20 18:33:56 +08:00
2021-01-05 09:18:22 +08:00
### 容器的属性
- flex-direction 声明容器使用的轴是水平的还是垂直的
2021-03-23 10:58:10 +08:00
- row 水平(起点在左)
- column 垂直 (起点在上)
- row-reverse 水平(起点在右)
- column-reverse 垂直(起点在下)
2021-01-05 09:18:22 +08:00
- justify-content 声明排列的方式
- center 居中
- space-around 每个项目两侧的间隔相等 项目到边框有间距
- space-between 两端对齐 项目之间的间隔都相等
- align-items 定义项目在交叉轴上的排列方式
- center 居中
- flex-start 交叉轴起点对齐(拓展)
- flex-end 交叉轴终点对齐
- baseline 第一行文字的基线对齐
2021-01-20 18:33:56 +08:00
- stretch 默认占满整个容器的高度
2021-03-23 10:58:10 +08:00
![image-20210120113341512](\4.flex.assets\image-20210120113341512.png)
2021-01-20 18:33:56 +08:00
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin:0;
padding:0;
}
.box{
width: 1000px;
height: 500px;
background: pink;
display:flex; //声明容器为弹性盒子
flex-direction: row; //声明排列的方向为水平和竖直
align-items: center;//垂直排列方式
justify-content: center //水平排列方式
}
.left{
width: 200px;
height: 200px;
background: red;
}
.right{
width: 200px;
height: 200px;
background: blue;
}
</style>
</head>
<body>
<div class="box">
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>
```
#### justify-content
##### center: 水平居中
2021-03-23 10:58:10 +08:00
![image-20210120114326831](\4.flex.assets\image-20210120114326831.png)
2021-01-20 18:33:56 +08:00
```
.box{
width: 1000px;
height: 500px;
background: pink;
display:flex;
flex-direction: row;
justify-content: center;
}
```
##### space-around 每个项目两侧的间隔相等 项目到边框有间距
2021-03-23 10:58:10 +08:00
![image-20210120114504619](\csspress\4.flex.assets\image-20210120114504619.png)
2021-01-20 18:33:56 +08:00
```
.box{
width: 1000px;
height: 500px;
background: pink;
display:flex;
flex-direction: row;
justify-content: space-around;
}
```
##### space-between 两端对齐 项目之间的间隔都相等
2021-03-23 10:58:10 +08:00
![image-20210120114721023](\4.flex.assets\image-20210120114721023.png)
2021-01-20 18:33:56 +08:00
```
.box{
width: 1000px;
height: 500px;
background: pink;
display:flex;
flex-direction: row;
justify-content: space-between;
}
```
#### align-items
定义侧轴的项目对齐方式
作业1
![image-20210120134940595](E:\web\lessons\课件\csspress\4.flex.assets\image-20210120134940595.png)
作业2
实现flex-内容宽度等分
作业3
左右布局,一侧定宽一侧自适应填满
作业4
未知高度上下左右居中
作业6
![image-20210120135351730](E:\web\lessons\课件\csspress\4.flex.assets\image-20210120135351730.png)
作业7
![image-20210120135442183](E:\web\lessons\课件\csspress\4.flex.assets\image-20210120135442183.png)
作业8
![image-20210120135503448](E:\web\lessons\课件\csspress\4.flex.assets\image-20210120135503448.png)