flex是什么
1、flex: 弹性布局
2、flex兼容性不要担心
2. flex解决了什么问题
1、块元素的垂直居中
2、元素在容器中 自动伸缩,适应容器大小的变化,特别适合移动端布局
3. flex布局的角色/参与者有哪些
1、只有二级: 父级和子级
2、父元素叫: flex容器(container)
3、子元素叫: flex项目(item) 或 flex元素
4. flex 项目的布局方向是什么
1、flex是一维布局,项目要么水平排列, 要么垂直排列,任何时间都只能沿着一个方向排列
2、flex项目的排列方向, 称为主轴, 排列方式有二种, 所以主轴也有二种: 水平/行轴,垂直/纵轴
3、与主轴对应的轴,称为交叉轴, 副轴, 侧轴
5. 可以用到flex容器上的属性有哪些
flex-direction: 设置容器中的主轴方向
flex-direction: row; 按行方向延伸
flex-direction: column; 按列方向延伸
flex-wrap: 是否允许创建多行容器, 一行排不下, 是否允许换行显示
flex-wrap: nowrap; 允许换行
flex-wrap: wrap; 不允许换行
flex-flow: 是上面二个属性的简写
flex-flow: 主轴方向 是否换行显示;
flex-flow: row wrap; 按行方向延伸且允许换行
justify-content: 设置容器中的项目在主轴上的对齐方式
justify-content: flex-start; 向起始线对齐
justify-content: flex-end; 向终止线对齐
justify-content: center; 居中对齐
justify-content: 可以分配主轴上剩余空间
justify-content: space-between; 两端对齐
justify-content: space-around; 分散对齐
justify-content: space-evenly; 平均对齐
align-items: 项目在交叉轴上的排列方式
align-items: flex-start; 顶部对齐
align-items: flex-end; 底部对齐
align-items: center; 垂直居中对齐
align-content: 设置项目在多行容器交叉轴上的对齐方式
align-content: space-between; 上下对齐
align-content: space-around; 分散对齐
align-content: space-evenly; 平均对齐
案例演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>flex1223作业</title>
<style>
.container {
/*给容器添加一个虚线属线,便于测试*/
/*border: 粗细 虚线 颜色(颜色不填的话默认为黑色);*/
border: 1px dashed #9a6e3a;
/*只要盒子加了 padding,border,就马上加上box-sizing,防止盒子撑大*/
box-sizing: border-box;
/*添加一个背景色*/
background-color: #9a6e3a;
}
.item {
/*宽度高度的快速写法为 W+大小+TAB*/
width: 100px;
height: 50px;
border: 1px dashed;
background-color: #44AAEE;
}
.container {
/*转为弹性盒子,flex容器*/
/*快速写法df+回车*/
display: flex;
/*转换为flex容器后,flex子元素全部变为:行内块元素,水平排列,可以设置宽和高*/
}
.container {
/*1.flex的第一个属性,flex-direction:设置容器中的主轴方向,默认为行*/
/*flex-direction: row;*/
/*列:垂直排列*/
/*flex-direction: column;*/
/*2.flex-wrap:是否允许换行显示,默认不换行*/
/*flex-wrap: nowrap;*/
/*换行显示*/
/*flex-wrap: wrap;*/
/*3.flex-flow:是上面二个属性的简写*/
/*flex-flow: 主轴方向 是否换行显示;*/
flex-flow: row wrap;
/*4.设置容器中的项目在主轴上的对齐方式*/
/*下面的是默认值,靠开始的位置对齐(左对齐)*/
/*justify-content: flex-start;*/
/*下面的是靠结束的位置对齐(右对齐)*/
/*justify-content: flex-end;*/
/*居中对齐*/
/*justify-content: center;*/
/*5.分配主轴上的剩余空间*/
/*两端对齐*/
/*justify-content: space-between;*/
/*分散对齐,子元素的左右空间大小一样(中间的元素空间大小是最左或最右的大小的两倍)*/
/*justify-content: space-around;*/
/*平均对齐,剩余空间也平均分配*/
justify-content: space-evenly;
/*6.项目在单行容器交叉轴上的排列方式(列轴)*/
height: 300px;
/*默认开始位置对齐,左对齐*/
/*align-items: flex-start;*/
/*底部对齐*/
/*align-items: flex-end;*/
/*居中对齐*/
/*align-items: center;*/
/*7.align-content:项目在多行容器上的对齐方式*/
/*默认值,靠顶*/
/*align-content: flex-start;*/
/*两端对齐(列轴为上下对齐)*/
/*align-content: space-between;*/
/*分散对齐,每个元素的两边距离相同*/
/*align-content: space-around;*/
/*平均分布对齐*/
align-content: space-evenly;
}
</style>
</head>
<body>
<div class="container">
<span class="item">1</span>
<span class="item">2</span>
<span class="item">3</span>
<span class="item">4</span>
<span class="item">5</span>
<span class="item">6</span>
<span class="item">7</span>
<span class="item">8</span>
</div>
</body>
</html>
1、flex-direction:设置容器中的主轴方向,默认为行
.container {
/*1.flex的第一个属性,flex-direction:设置容器中的主轴方向,默认为行*/
flex-direction: row;
}
2、flex-direction: column 垂直排列
.container {
/*列:垂直排列*/
flex-direction: column;
}
3、flex-wrap:是否允许换行显示,默认不换行
.container {
/*2.flex-wrap:是否允许换行显示,默认不换行*/
/*flex-wrap: nowrap;*/
/*换行显示*/
flex-wrap: wrap;
}
4、flex-flow:是上面二个属性的简写(值:主轴方向 是否换行显示)
```
.container {
/*3.flex-flow:是上面二个属性的简写*/
/*flex-flow: 主轴方向 是否换行显示;*/
flex-flow: row wrap;
}
```
5、justify-content:左对齐/右对齐
.container {
/*4.设置容器中的项目在主轴上的对齐方式*/
/*下面的是默认值,靠开始的位置对齐(左对齐)*/
/*justify-content: flex-start;*/
/*下面的是靠结束的位置对齐(右对齐)*/
justify-content: flex-end;
}
6、justify-content:居中对齐
.container {
/*居中对齐*/
justify-content: center;
}
7、justify-content:分配主轴上的剩余空间,两端对齐
.container {
/*5.分配主轴上的剩余空间*/
/*两端对齐*/
justify-content: space-between;
}
8、justify-content:分配主轴上的剩余空间,分散对齐
.container {
/*分散对齐,子元素的左右空间大小一样(中间的元素空间大小是最左或最右的大小的两倍)*/
/*justify-content: space-around;*/
/*平均对齐,剩余空间也平均分配*/
/*justify-content: space-evenly;*/
}
9、align-items:左对齐 项目在单行容器交叉轴上的排列方式
.container {
/*6.项目在单行容器交叉轴上的排列方式(列轴)*/
height: 300px;
/*默认开始位置对齐,左对齐*/
/*align-items: flex-start;*/
}
10、align-items:底部对齐
.container {
/*6.项目在单行容器交叉轴上的排列方式(列轴)*/
height: 300px;
/*底部对齐*/
align-items: flex-end;
}
11、align-items:居中对齐
.container {
/*居中对齐*/
align-items: center;
}
12、align-content:项目在多行容器上的对齐方式(默认值:靠顶)
.container {
/*7.align-content:项目在多行容器上的对齐方式*/
/*默认值,靠顶*/
align-content: flex-start;
}
13、align-content:两端对齐(列轴为上下对齐)
.container {
/*两端对齐(列轴为上下对齐)*/
align-content: space-between;
}
14、align-content:分散对齐,每个元素的两边距离相同
.container {
/*分散对齐,每个元素的两边距离相同*/
align-content: space-around;
}
15、align-content:平均分布对齐
.container {
/*平均分布对齐*/
align-content: space-evenly;
}