Flex布局学习
1.基本概念
- **Flex容器:**采用Flex布局的元素
- **Flex项目:**Flex元素的所有的子元素。
- **主轴:**水平轴叫做主轴
- **交叉轴:**和主轴垂直的交叉轴
2.容器的属性
2.1 flex-direction
此属性决定主轴的方向。
.box {
flex-direction: row | row-reverse | column | column-reverse;
}
- row(默认值):主轴为水平方向,起点在左端。
- row-reverse:主轴为水平方向,起点在右端。
- column:主轴为垂直方向,起点在上沿。
- column-reverse:主轴为垂直方向,起点在下沿。
代码例子:
<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{
display: flex;
/* flex-direction: column; */
/* flex-direction: column-reverse; */
/* flex-direction: row; */
/* flex-direction: row-reverse; */
/* flex-wrap: wrap; */
flex-flow: row wrap;
justify-content:space-between;
align-items: center;
align-content:center ;
background-color: darkcyan;
width: 600px;
height: 200px;
}
.item{
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<div class="box">
<div class="item" style="background-color: blueviolet;"></div>
<div class="item" style="background-color: yellowgreen;"></div>
<div class="item" style="background-color: red;"></div>
<div class="item" style="background-color: green;"></div>
</div>
</body>
</html>
效果图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T2SnIwgp-1648262560866)(…/AppData/Roaming/Typora/typora-user-images/image-20220326102413294.png)]
2.2.flex-wrap
- nowrap(默认):不换行。
- wrap:换行,第一行在上方。
- wrap-reverse:换行,第一行在下方。
.box{
flex-wrap: nowrap | wrap | wrap-reverse;
}
2.3 flex-flow
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
.box {
flex-flow: <flex-direction> <flex-wrap>;
}
2.4 justify-content
justify-content属性定义了项目在主轴上的对齐方式。
flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
.box {
justify-content: flex-start | flex-end | center | space-between | space-around;
}
2.5 align-items
- flex-start:交叉轴的起点对齐。
- flex-end:交叉轴的终点对齐。
- center:交叉轴的中点对齐。
- baseline: 项目的第一行文字的基线对齐。
- stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
.box {
align-items: flex-start | flex-end | center | baseline | stretch;
}
2.6 align-content
flex-start:与交叉轴的起点对齐。
flex-end:与交叉轴的终点对齐。
center:与交叉轴的中点对齐。
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
stretch(默认值):轴线占满整个交叉轴。
.box {
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}