文章目录
1.什么是flex布局,
2.flex 的主轴方向。
3.flex 的侧轴的方向
4.flex属性的各种属性
什么是flex布局
Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
1.1 适用范围:
1. 任何一种元素都可以指定为flex布局。
.wrap{
display:flex;
}
2.行内元素也可以使用Flex布局。
.box{
display: inline-flex;
}
1.2 flex布局(弹性布局)
1:是一种浏览器提倡的布局模型。
2:避免浮动脱标的问题 (flex布局不会脱标)。
3:注意:如果子盒子没有设置高度,子盒子将会拉伸填满父盒子高度。
1.3flex布局的盒子模型的组成
设置方式:
1.父元素添加display:flex
子元素自动挤压或拉伸。
2.添加display:flex
后的视觉效果:子级一行排列/水平排列。
3.水平排列:默认主轴在水平,弹性盒子默认沿着主轴排列。
4.flex: 1, flex :2,意思就是:1即为flex-grow:1,经常用作自适应布局,将 父容器的display:flex,侧边栏大小固定后,将内容区flex:1,内容区则 会自动放大占满剩余空间。
1.4 体验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>体验flex布局</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
display: flex;
justify-content: space-between;
/* height: 200px; */
border: 1px solid #000;
}
.box div {
/* float: left;
margin: 10px; */
width: 100px;
height: 100px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
</body>
</html>
flex 的主轴方向
2.1: .flex 的主轴方向
1.
flex-direction
属性决定主轴的方向(即项目的排列方向)。
row
(默认值):主轴为水平方向,起点在左端。
row-reverse
:主轴为水平方向,起点在右端。
column
:主轴为垂直方向,起点在上沿
column-reverse
:主轴为垂直方向,起点在下沿。
2.21:
修改主轴对齐方式属性:justify-content
/* 居中 */
justify-content: center;
/* 间距在弹性盒子(子级)之间 */
justify-content: space-between;
/* 所有地方间距相等 */
justify-content: space-evenly;
/* 间距加载子级两侧 */
/* 视觉效果:子级之间的距离是父级两头距离的2倍 */
justify-content: space-around;
场景应用:
<!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>主轴对齐方式</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
display: flex;
justify-content: flex-start;
justify-content: flex-end;
justify-content: center;
/* 均分间距: 父级剩余尺寸分配成间距 */
/* 间距出现在子级之间 */
justify-content: space-between;
/* 间距出现在子级的两侧 */
/* 视觉效果: 子级之间的间距是父级两端间距的二倍 */
justify-content: space-around;
/* 各个地方的间距都相等 */
justify-content: space-evenly;
height: 200px;
margin: auto;
border: 1px solid #000;
}
.box div {
width: 100px;
height: 100px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
</body>
</html>
3.flex 的侧轴的方向。
1.场景应用。
<!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>侧轴对齐方式</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
display: flex;
/* align-items: center; */
/* 默认值, 表示拉伸: 去掉子级的高度 */
/* align-items: stretch; */
height: 300px;
margin: auto;
border: 1px solid #000;
}
.box div {
/* width: 100px; */
/* height: 100px; */
background-color: pink;
}
/* 单独设置某个弹性盒子的侧轴对齐方式 */
.box div:nth-child(2) {
align-self: center;
height: 50px;
}
</style>
</head>
<body>
<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
</body>
</html>
4.flex属性的各种属性
flex-wrap属性
默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条 轴线排不下,如何换行。
1box{ flex-wrap: nowrap | wrap | wrap-reverse; }
2.nowrap(默认):不换行。
3.wrap:换行,第一行在上方。
4.wrap-reverse:换行,第一行在下方。
flex-flow属性
1.flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
.box { flex-flow: <flex-direction> || <flex-wrap>; }
justify-content属性
justify-content属性定义了项目在主轴上的对齐方式。 .box { justify-content: flex-start | flex-end | center | space-between | space-around; } flex-start(默认值):左对齐 flex-end:右对齐 center: 居中 space-between:两端对齐,项目之间的间隔都相等。 space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
align-items属性
box { align-items: flex-start | flex-end | center | baseline | stretch; } flex-start:交叉轴的起点对齐。 flex-end:交叉轴的终点对齐。 center:交叉轴的中点对齐。 baseline: 项目的第一行文字的基线对齐。 stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
align-content属性
align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。 .box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; } flex-start:与交叉轴的起点对齐。 flex-end:与交叉轴的终点对齐。 center:与交叉轴的中点对齐。 space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。 space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 stretch(默认值):轴线占满整个交叉轴。