1
Flex布局

对于我们平常遇到的问题的解决方法。

1.在父容器中的垂直居中。
2.使容器内的子项占据等量的空间(宽、高)。
3.使容器内的列等高排列。

在线查看Flex布局示例及其属性使用,效果展现:
在线示例
下面是各个属性的描述:

.box{
    display:flex;
}

设置容器的display属性为flex,如果是行内元素使用inline-flex.

flex-direction

定义子项如何排列。

.box{
    flex-direction:row;
}
row:X轴排列,从左到右,
row-reverse:X轴排列,从右到左
column:Y轴排列,从上到下
column-reverse:Y轴排列,从下到上
flex-wrap

定义子项超出时,换行方式。

.box{
    flex-wrap:wrap;
}
wrap:换行
nowarp:不换行
wrap-reverse:换行,反转排列
flex-flow是flex-direction/flex-wrap的缩写。
justify-content

定义子项横向排列时的样式。

.box{
    justify-content:center;
}
flex-start:靠左
flex-end:靠右
center:居中
space-between:沿X轴均匀分配,两边不留空
space-around:沿X轴均匀分配,两边留空
align-items

定义子项纵向排列时的样式。

.box{
    align-items:center;
}
flex-start:靠上
flex-end:靠下
center:垂直居中                          **问题一
baseline:按照子项中第一行文本位置为基准水平线
stretch:所有子项纵向占满空间。                   **问题三
子项的高度不能写死,不然stretch无效。
align-content

有多行子项时的排列样式(即 flex-wrap属性必须是wrap

.box{
    align-content:center;
}
flex-start:靠上
flex-end:靠下
center:垂直居中
space-between:沿Y轴分配,上下边不留空
space-around:沿Y轴均匀分配,上下边留空
stretch:纵向铺满
子项只有一行时不生效。
子项item高度不能写死,不然stretch不生效。
项目的属性
order

定义子项的排列顺序,默认0。数值越小越靠前

.box-item:nth-of-type(1){
    order:-1;
}
.box-item:nth-of-type(3){
    order:2;
}
flex-frow

定义项目的放大比列,默认0不放大。

.box-item{
    flex-grow:1;
}
值一样时平均分配空间。
值不一样时按值比例分配。
flex-shrink

定义项目的缩小比列,默认1缩小。为0时不缩小。

.box-item:nth-of-type(2){
    flex-shrink:0;
}
flex-basis

定义项目在占据多余空间时的分配。auto为原大小

.box-item:nth-of-type(3){
    flex-basis:300px;
}
分配的大小超过主轴空间,按比列分配空间。

flex 是flex-grow/flex-shrink/flex-basis的缩写。

align-self

与容器的align-item对应,定义子项自己的排列位置。默认auto

.box-item:nth-of-type(2){
    align-self:flex-start;
}
.box-item:nth-of-type(3){
    align-self:flex-end;
}
.box-item:nth-of-type(3){
    align-self:center;
}
auto:默认
flex-start:靠上
flex-end:靠下
center:垂直居中
baseline:以及元素第一行文本为基准线
stretch:占满纵向空间。

示例GitHub地址:
项目地址


hboot
68 声望8 粉丝

爱生活、爱自由