Flex布局
1.容器属性
- 设置主轴方向
- 设置主轴对齐方式
- 设置侧轴对齐方式(单行)
- 设置项目是否换行显示
- 设置侧轴对齐方式(多行
2.项目属性
- 项目的缩放
- 项目单独的侧轴对齐方式
- 项目的排放顺序
1.1给父盒子设置display:flex
- 父盒子就变成了弹性盒子(Flexbox),一般称为容器
- 子元素就变成了一个全新的盒子(不能使用float、clear、vertical-align ),一般称为项目
- 给父盒子或子元素添加属性,目的:控制子盒子的大小和位置
1.3容器属性-设置主轴方向
- 主轴默认是水平方向,侧轴默认的是垂直方向
- 属性:flex-dirretion
- 值: | 属性值 | 作用 | | :—-: | :—-: | | row | 行,水平(默认值) | | column | 列,垂直 | | row-revers | 行,从右向走 | | coulumn-revers | 列,从下向上 |
1.4.2 容器属性 - 设置主轴对齐方式 *
/*弹性盒子设置在父元素上,作用是更好的控制子元素的分布(排列)*/
justify-content
/*控制主轴上子元素的对齐方式
flex-start-主轴开始的位置对齐
flex-end-主轴结束的位置对齐
center-主轴居中对齐
space-between-两端对齐中间等距
space-around-两边是中间等距的一半
space-evenly两边和中间的距离 */
属性值 | 作用 |
---|---|
flex-start | 默认值, 起点开始依次排列 |
flex-end | 重点开始依次排列 |
center | 沿主轴居中排列 |
space-around | 弹性盒子沿主轴均匀排列, 空白间距均分在弹性盒子两侧 |
space-between | 弹性盒子沿主轴均匀排列, 空白间距均分在相邻盒子之间 |
space-evenly | 弹性盒子沿主轴均匀排列, 弹性盒子与容器之间间距相等 |
1.4.3 容器属性 - 设置侧轴对齐方式(单行)
属性: align-items
值: | 属性值 | 作用 | | :—-: | :—-: | | flex-start | 默认值, 起点开始依次排列 | | flex-end | 重点开始依次排列 | | center | 沿侧轴居中排列 | | stretch | 默认值, 弹性盒子沿着主轴线被拉伸至铺满容器 |
align-items
:设置子元素在侧轴上的对齐方式。属性值可以是:
flex-start
从侧轴开始的方向对齐flex-end
从侧轴结束的方向对齐baseline
基线 默认同flex-startcenter
中间对齐stretch
拉伸
1.4.4 容器属性 -设置项目是否换行显示
属性: flex-wrap
值: | 属性值 | 作用 | | :—-: | :—-: | | nowrap | nowrap | | wrap | 换行 | | wrap-reverse | 换行,并且和侧轴方向相反 |
注意: 换行的条件有两个(缺一不可)
flex-wrap: wrap
项目的宽度之和要大于容器的宽度
1.4.5 容器属性 - 设置侧轴对齐方式(多行)
属性: align-content
- 值: | 属性值 | 作用 | | :—-: | :—-: | | align-content | 默认值, 起点开始依次排列 | | flex-end | 重点开始依次排列 | | center | 沿侧轴居中排列 | | stretch | 默认值, 弹性盒子沿着主轴线被拉伸至铺满容器 | | space-around | 弹性盒子沿侧轴均匀排列, 空白间距均分在弹性盒子两侧 | | space-between | 弹性盒子沿侧轴均匀排列, 空白间距均分在相邻盒子之间 | | space-evenly | 弹性盒子沿侧轴均匀排列, 弹性盒子与容器之间间距相等 |
display: flex;
/* 多行换行
nowrap 不换行
wrap 换行 */
flex-wrap: nowrap;
/* 控制子元素多行侧轴对齐
staeth 拉伸
flex-start 侧轴开始的位置对齐
flex-end 侧轴结束的位置对齐
center 侧轴居中对齐*/
1.5.1 项目属性 - 设置项目所占主轴方向的大小
属性: flex
值: | 属性值 | 作用 | | :—-: | :—-: | | auto | 项目既可以放大,也可以缩小(不是默认值!) | | none | 项目不可以缩放 | | 纯数字 | 项目等比例缩放 |
- 注意:flex的默认值:不放大,但是当父子宽度不够时会缩小
1.5.2 项目属性 -项目单独的侧轴对齐方式
属性: align-self
值: | 属性值 | 作用 | | :—-: | :—-: | | auto | 默认值,和大家一样 | | flex-start | 默认值, 起点开始依次排列 | | flex-end | 重点开始依次排列 | | center | 沿侧轴居中排列 | | stretch | 弹性盒子沿着主轴线被拉伸至铺满容器 |
/* 主轴方向
row 水平方向 默认值
row-reverse 水平反向
column 垂直方向 */
flex-direction: column;
/* 主轴对齐方向 */
justify-content: center;
/* 单行侧轴方向 */
align-items: center;
1.5.3 项目属性 -项目的排列顺序
属性:order
值: | 属性值 | 作用 | | :—-: | :—-: | | 纯数字 | 默认为0,数字越大越靠后 |
Flex布局重点总结
大数据热点案例
设置Flex布局的属性是什么?
- display:flex
容器属性
- 设置主轴方向的属性
- 设置主轴对齐方式的属性
- 设置侧轴对齐方式的属性(单行)
项目属性
- 设置项目所占主轴方向的大小
效果图:
代码块:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: #333;
}
.hot {
position: relative;
width: 747px;
height: 617px;
background: url(./images/shj.png);
margin: 0 auto;
}
.circle {
position: absolute;
top: 180px;
right: 126px;
width: 100px;
height: 100px;
/* border: 2px solid #fff; */
}
.point {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
width: 10px;
height: 10px;
margin: auto;
background-color: yellow;
border-radius: 50%;
}
.circle div:nth-child(n+2) {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
width: 10px;
height: 10px;
margin: auto;
box-shadow: 0 0 10px 0 yellow;
border-radius: 50%;
animation: light 1.2s linear infinite;
opacity: 0;
}
.circle div:nth-child(3) {
animation-delay: 0.4s;
}
.circle div:nth-child(4) {
animation-delay: 0.8s;
}
@keyframes light {
0% {}
70% {
/* 注意:此次不要用缩放,因为缩放会将盒子所有的东西放大,包含阴影 */
/* transform: scale(4); */
width: 40px;
height: 40px;
opacity: 1;
}
100% {
width: 80px;
height: 80px;
opacity: 0;
}
}
</style>
</head>
<body>
<div class="hot">
<div class="circle">
<!-- 实心的小点 -->
<div class="point"></div>
<!-- 发光的圈圈 -->
<div></div>
<div></div>
<div></div>
</div>
</div>
</body>
</html>