1.体验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>
.box {
width: 1200px;
height: 400px;
background-color: tomato;
margin: 0 auto;
/* 弹性容器 */
display: flex;
/* 主轴对齐 快捷键jc */
/* 从左到右,起点开始排列盒子 */
justify-content: start;
/* 从右到左,终点开始排列盒子 */
justify-content: end;
/* 盒子水平居中 重点 */
justify-content: center;
/* 2边靠边,中间自适应 重点 */
justify-content: space-between;
/* 盒子自适应,按照1比2的比例平均分 */
justify-content: space-around;
/* 盒子自适应,盒子中间的距离1:1平均分 */
justify-content: space-evenly;
}
.box span {
/* 弹性盒子 默认在一行排列 */
width: 200px;
height: 200px;
background-color: violet;
}
.box span:nth-child(2n) {
background-color: turquoise;
}
/* flex布局:弹性布局 (操作父亲管理儿子) */
/* 组成部分
1.父元素 弹性容器
2.子盒子 弹性盒子
3.主轴(默认是x轴)
4.侧轴/交叉轴(默认是y轴) */
</style>
</head>
<body>
<div class="box">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
</div>
</body>
</html>
需要注意的是display: flex;是给父元素加的,子元素在父元素里面产生效果后并不会像浮动那种脱离标准流(脱标)。
2.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>
.box {
width: 1200px;
height: 400px;
background-color: tomato;
margin: 0 auto;
/* 弹性容器 */
display: flex;
/* 侧轴对齐方式 快捷键ai */
/* 从上往下排列盒子 */
align-items: flex-start;
/* 从下往上排列盒子 */
align-items: flex-end;
/* 垂直盒子居中 重点 */
align-items: center;
/* 默认值 拉伸 */
/* align-items: stretch; */
}
.box div {
/* 弹性盒子 默认在一行排列 */
width: 200px;
/* height: 200px; */
background-color: violet;
}
.box div:nth-child(2n) {
background-color: turquoise;
}
</style>
</head>
<body>
<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
</body>
</html>
有了Flex的主轴和侧轴对齐小案例,接下来就可以完成一个三筒的小案例
3.三筒小案例
<!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>
.box {
width: 200px;
height: 250px;
margin: 0 auto;
background-color:#DEE1E6;
border: 5px solid #000;
display: flex;
/* 主轴对齐两边靠边 */
justify-content: space-between;
}
.box div {
width: 50px;
height: 50px;
background-color: springgreen;
border-radius: 50%;
}
.box div:nth-child(2) {
/* 子盒子侧轴对齐 */
align-self: center;
}
.box div:nth-child(3) {
/* 子盒子侧轴对齐 */
align-self: flex-end;
}
</style>
</head>
<body>
<div class="box">
<div class="div"></div>
<div class="div"></div>
<div class="div"></div>
</div>
</body>
</html>
4.圣杯布局
<!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 {
width: 100%;
height: 50px;
background-color: tomato;
/* 弹性容器 */
display: flex;
/* 盒子最小宽度不能小于500px */
min-width: 500px;
}
/* 弹性盒子 */
.box .left,
.box .right {
width: 50px;
height: 50px;
background-color: turquoise;
}
.box .center {
/* 平分父盒子多余的宽度 */
flex: 1;
height: 50px;
background-color: springgreen;
}
</style>
<!-- 圣杯布局:2边盒子要固定,中间盒子自适应 -->
</head>
<body>
<div class="box">
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
</div>
</body>
</html>
圣杯布局的好处在于取代了之前的float浮动效果,也不需要让盒子脱标导致后期产生的有可能盒子塌陷或者盒子浮动脱标问题,flex布局后的盒子依然处于标准流,需要注意的是flex布局display: flex;必须是加在父盒子里面的;对比之前浮动和定位布局盒子,flex更加快速而且方便,也是市场上目前最主流的盒子布局。
如果你觉得这篇文章对你有帮助或者还有什么不足的地方~欢迎大家在评论区发表自己的意见或看法。