Flex布局 | 青训营笔记

93 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第1天

为什么要引入Flex布局

传统的布局在盒子模型的基础上通过position、float等属性实现,可以实现简单的排版,但是对于常用的垂直水平居中布局实现并不灵活,且较为复杂。因此CSS提供了更高级的Flex box弹性布局,通过其中的属性可以实现子级元素在容器中的排序、流向、对齐、宽高等功能,使布局更加灵活高级。

Flex布局的基本组成

Flex布局基于容器与容器中的子元素两部分构成,其中子元素的行为受容器中Flex相关属性的控制。基于对布局排序对齐等功能的实现,容器默认存在两根轴,主轴与侧轴。 GAER$662JY9E2ET8@I@9OBG.png

Felx布局的容器属性

flex-direction

flex-direction属性决定子元素的排序方向。 flex-direction: row;默认值,子元素从左向右排序。 row.png flex-direction: row-reverse;子元素从右向左排序。 row-reverse.png flex-direction: column;子元素从上到下排序。
colunm.png
flex-direction: column-reverse;子元素从下到上排序。
column-reverse.png

justify-content

justify-content设置子元素在主轴上的对齐方式。 justify-content: flex-start;默认值,子元素从起点开始排列。 flex-start.png justify-content: flex-end;子元素从终点开始排列。 flex-end.png justify-content: center;子元素居中排列。 center.png justify-content: space-between;首元素位于起点,尾元素位于终点,其余子元素均匀排列。 space-between.png justify-content: space-around;均匀排列每个元素,子元素周围分配相同的空间。 space-around.png justify-content: space-evenly;均匀排列每个元素,子元素之间间隔相等。 space-evenly.png

align-items

align-items设置子元素在侧轴上的对齐方式。 align-items: stretch;默认值。 stretch.png 若侧轴大小属性未设定,元素高度拉伸为容器高度。 stretch(1)5.png

align-items: flex-start;子元素紧靠侧轴起始边界。 flex-start(1).png align-items: flex-end;子元素紧靠侧轴结束边界。 flex-end(1).png align-items: center;子元素位于容器中心。 center(1).png align-items: baseline;子元素位于容器基线。 baseline.png

flex-grow

flex-grow有剩余空间时的伸展能力,设置扩展比率,默认值为flex-grow: 0;

flex-grow(1).png 容器总宽度为400px,每个子元素的宽度为100px,还剩400-3*100=100px。对于剩下的100px,通过子元素中的伸展比率进行扩展,a元素的扩展比率为2,b元素的扩展比率为默认值0,c元素的扩展比率为1。a元素扩展2/3*100=66.6px,b元素扩展0*100=0,c元素扩展1/3*100=33.3px

flex-shrink

flex-shrink容器空间不足时收缩的能力,设置收缩比率,默认值为flex-shrink: 1;

flex-shrink(1).png 容器总宽度为400px,每个子元素的宽度为150px,不足3*150-400=50px。对于不足的50px,通过子元素中的收缩比率进行收缩,a元素的收缩比率为默认值1,b元素的扩展比率为0,c元素的扩展比率为默认值1。a元素收缩1/2*50=25px,b元素收缩0*100=0,c元素收缩1/2*50=25px

引用参考

理解CSS2.pptx

菜鸟教程-弹性盒子模型(Flexible Box) 属性(新)