flex
TODO
很老的总结,不是很好,暂时可以直接看 阮一峰 Flex
1.原理
- 给父盒子指定
display:flex
控制子盒子的位置和排列方式
2.父项属性
flex-direction:设置主轴的方向
row
:x 轴正方向(默认)row-reverse
:x 轴负方向column
:y 轴正方向column-reverse
:y 轴负方向justify-content:设置主轴上的子元素的排列方式(使用时要确定主轴方向)
flex-start
:从头开始排列(默认)flex-end
:从尾部开始排列center
:在主轴中心对齐(如果主轴是 x 轴 水平居中)space-around
:平均分配剩余空间(相当于给每个盒子加上一个相同的 margin)space-between
:先两边贴边再分配剩余空间flex-wrap:设置子元素是否换行
默认情况下,项目都排在一条线上,如果排不开将缩小每一个的宽度
nowrap
:不换行(默认)wrap
:换行align-items:设置侧轴上的子元素排列方式(单行)
flex-start
:从头开始排列(默认)flex-end
:从尾部开始排列center
:居中对齐(如果主轴是 x 轴 垂直居中)stretch
:拉伸(子盒子不要给高度,将子盒子拉伸充满父盒子)baseline
: 项目的第一行文字的基线对齐。align-content:设置侧轴上的子元素排列方式(多行 - 必须存在换行)
flex-start
:从头开始排列flex-end
:从尾部开始排列center
:居中对齐space-around
:平均分配剩余空间space-between
:先两边贴边再分配剩余空间stretch
:拉伸flex-flow:flex-direction 和 flex-wrap 的复合写方法
cssflex-direction: row; flex-wrap: wrap; /* 等价 */ flex-flow: row wrap;
3.子项属性
flex
:属性定义子项目分配剩余空间,用flex
来表示所占的份数css.item { flex: <number>; /* default 0*/ }
align-self
控制自己在侧轴的排列方式cssspan:nth-child(2) { /*只让第2个盒子下降到底部*/ align-self: flex-end; }
order
定义盒子的排列顺序(默认为 0)flex-grow
属性定义项目的放大比例,默认为 0,即如果存在剩余空间,也不放大。flex-shrink
属性定义了项目的缩小比例,默认为 1,即如果空间不足,该项目将缩小。
TIP
如果所有项目的 flex-grow 属性都为 1,则它们将等分剩余空间(如果有的话)。如果一个项目的 flex-grow 属性为 2,其他项目都为 1,则前者占据的剩余空间将比其他项多一倍。