- flex布局
你了解flex布局吗?flex布局简单来说把元素分为了两大类,容器 项目。
容器
首先我们先浅谈一下容器的规则。容器拥有轴线,容器中的项目按照主轴的方向排列。轴线分为主轴和交叉轴,简单来说就是xy轴。x为主轴。而且容器内的项目是默认不能超过容器的,超出的话项目会自动等比缩小。因为轴线只有一条,所以默认项目也是不会换行的。
接着我们来浅聊一下容器的样式吧。
- flex-direction 修改主轴的方向
1. row 默认值,默认主轴的方向是水平方向的,起点在左端
2. row-reverse 主轴水平方向,起点右端
3. column 主轴为垂直方向,起点上方
4. column-reverse 主轴垂直方向,起点在下方
- flex-wrap 决定当一条轴线排不下时要不要换行
1. nowrap 默认不换行
2. wrap 换行,第一行在上方
3. wrap-reverse 换行,最后一方在上方,倒着排列
- flex-flow 是 flex-direction 和 flex-wrap 的简写
flex-flow:row nowrap;
- justity-content 定义下轴线上的对齐方式
1.flex-start 默认左对齐
2.flex-end 右对齐
3. center 居中
4. space-between 两端对齐 项目之间的间隔都相等
5. space-around 每个项目两侧的间隔相等,这只项目左右边距
- align-items 定义项目在交叉轴上的对齐方式
1. flex-start 交叉轴的起点对齐
2. flex-end 交叉轴的终点对齐
3. center 交叉轴的中点对齐
4. baseline 项目的第一行文字的基准线
5. stretch 默认值 如果项目未设置auto 或者高度 将沾满整个容器的高度
ps: 所以flex 水平垂直居中对齐的方式是
div:{display:flex;justity-content:center; align-items:center;}
- align-content 定义多个轴线的对齐方式,如果项目只有一个轴线,那么该属性不起作用。
1. flex-start: 与交叉轴的起点对齐
2. flex-end 与交叉轴的终点对齐
3. center 与交叉轴的终点对齐
4. space-between
5. space-around
6. strech 默认值轴线沾满整个交叉轴
了解完容器,接下来我们了解一下项目。
项目
项目是容器的子元素,项目也可以当做容器,二者互不干扰。容器内的项目默认是从左到右排列的。项目自动会变成块元素(独立成行,可以设置宽高)。项目在交叉轴方向上没有设置大小,默认会自动根据容器交叉轴方向的大小一样,如果容器控制了项目在交叉轴的对齐方式,那么项目在交叉轴的大小就和项目的内容一致。
项目的样式
- order 规定项目的排列顺序,数字越小排列越靠前,默认为0 值是一个数字
- flex-grow 规定项目的放大比列(剩余空间的分配) 一般写成0或1 0不是放大 1是放大
- flex-shrink 规定项目的缩小比例 一般写成0或1 0是不缩小,及时空间不够也不缩小,1 是缩小,等比缩小
- align-self 可以规定单独项目在交叉轴上不同的对齐方式。
- flex-basis
- flex 是 flex-grow flex-shrink flex-basis 的简写。
通过上面的了解,我们就可以设置元素的垂直居中
<style>
.father {
width: 500px;
height: 300px;
border: 1px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
}
.father div {
border: 1px solid #ccc;
margin: 10px;
padding: 20px;
}
</style>
<body>
<div class="father">
<div class="son0">1</div>
<div class="son1">2</div>
<div class="son2">3</div>
</div>
</body>
实现效果如下: