# live demo
click item to change stlye
item-1
item-2
item-3
item-4
item-5
style of container
flex-direction:
flex-wrap:
justify-content:
align-items:
align-content:
# 属性解释
# flexbox
对Flex容器设置display:flex或者display:inline-flex
1
2
3
<div class="wrap">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
.wrap {
display: flex;
}
# flex-direction
控制Flex项目沿着主轴(Main Axis)(父容器) 的排列方向
flex-direction:row
1
2
3
flex-direction:row-reverse
1
2
3
flex-direction:column
1
2
3
flex-direction:column-reverse
1
2
3
.wrap {
flex-direction:row || column || row-reverse || column-reverse
// 水平(顺)|| 垂直(顺)|| 水平(逆)|| 垂直(逆)
}
# flex-wrap
控制Flex项目是否换行,默认值是nowrap,不换行
flex-wrap:wrap
1
2
3
4
5
6
7
8
9
flex-wrap:wrap-reverse
1
2
3
4
5
6
7
8
9
flex-wrap:nowrap
1
2
3
4
5
6
7
8
9
.wrap {
flex-wrap:wrap || nowrap || wrap-reverse
// 换行(正)|| 不换行 || 换行(反)
}
# flex-flow
flex-direction和flex-wrap两个属性的组合属性
.wrap {
flex-flow:row wrap|| row nowrap || column wrap || column nowrap 等等
}
# justify-content
Flex项目在整个Main-Axis上的对齐方式(父容器X轴),默认是flex-start,起始端对齐
justify-content:flex-start
1
2
3
justify-content:flex-end
1
2
3
justify-content:center
1
2
3
justify-content:space-between
1
2
3
justify-content:space-around
1
2
3
.wrap {
justify-content:flex-start || flex-end || center || space-between || space-around
// 起始端对齐 → || 末尾段对齐 ← || 居中对齐 || 首尾两端均匀分布 || 均匀分布(首尾两端的子容器到父容器的距离是子容器间距的一半)
}
# align-items
Flex项目在Cross-Axis对齐方式(父容器Y轴),默认是flex-start,起始端对齐
align-items:flex-start
1
2
3
align-items:flex-end
1
2
3
align-items:center
1
2
3
align-items:stretch
1
2
3
align-items:baseline
1
2
3
.wrap {
align-items:flex-start || flex-end || center || baseline || stretch
// 起始端对齐 ↓ || 末尾段对齐 ↑ || 居中对齐 || 基线对齐(默认是指首行文字) || 子容器沿Y轴方向的尺寸拉伸至与父容器一致
}
# align-content
该属性只针对子容器多行排列时,设置行与行之间的对齐方式,对单行无效。
align-content:flex-start
1
2
3
4
5
6
7
8
9
align-content:flex-end
1
2
3
4
5
6
7
8
9
align-content:center
1
2
3
4
5
6
7
8
9
align-content:space-around
1
2
3
4
5
6
7
8
9
align-content:space-between
1
2
3
4
5
6
7
8
9
align-content:stretch
1
2
3
4
5
6
7
8
9
.wrap {
align-content:flex-start || flex-end || center || space-around || space-between || stretch
// 起始端对齐 ↓ || 末尾段对齐 ↑ || 居中对齐 || 等边距均匀分布 || 等间距均匀分布 || 拉伸对齐
}
# order
改变子容器的排列顺序,覆盖 HTML 代码中的顺序,默认值为 0,可以为负值,数值越小排列越靠前。
1
2
3
.wrap {
display:flex;
div{
order:1//数字
}
}
# flex-basis
在不伸缩的情况下子容器的原始尺寸。主轴为横向时代表宽度,主轴为纵向时代表高度。
.wrap {
display:flex;
// 主轴为横向时代表宽度
flex-direction:row;
div{
flex-basis:120px;//数字
height:80px;
}
// 或者
// 主轴为纵向时代表高度
// flex-direction:column;
// div{
// flex-basis:120px;//数字
// width:80px;
// }
}
# flex-grow
父容器剩余空间按 1:2 的比例分配给子容器
子容器未加flex-grow
1
2
子容器flex-grow:1,flex-grow:2
1
2
.wrap {
display:flex;
.div1{
flex-grow:1
}
.div2{
flex-grow:2
}
}
# flex-shrink
子容器超出的部分按 1:2 的比例从子容器中减去
子容器未加flex-shrink
1
2
子容器flex-shrink:1,flex-shrink:2
1
2
.wrap {
display:flex;
width:100px;
.div1,.div2{
flex-basis:200px;
// 设置基础宽度,且超出父容器宽度
}
.div1{
flex-shrink: 1;
}
.div2{
flex-shrink: 2;
}
}
# align-self
每个子容器可以单独定义沿交叉(父容器Y)轴的排列的方式,此属性与父容器 align-items 属性完全一致,如果两者同时设置则以子容器的 align-self 属性为准。
align-self:flex-start
align-self:flex-start
2
3
align-self:flex-end
align-self:flex-end
2
3
align-self:center
align-self:center
2
3
align-self:stretch
align-self:stretch
2
3
align-self:baseline
align-self: baseline;
2
align-self: baseline;
.wrap {
align-self:flex-start || flex-end || center || baseline || stretch
// 起始端对齐 || 末尾段对齐|| 居中对齐 || 基线对齐(默认是指首行文字) || 子容器沿Y轴方向的尺寸拉伸至与父容器一致
}