flex布局

229 阅读3分钟

flex布局

1.Flex布局/弹性布局: 是一种浏览器提倡的布局模型,布局网页更简单、灵活,还可以避免浮动脱标的问题,非常适合结构化布局。

2.设置方式: 父元素添加 display: flex,子元素可以自动的挤压或拉伸。在Flex布局模型中,可以通过调节主轴或侧轴的对齐方式来设置盒子之间的间距。

3.组成部分: 弹性容器、弹性盒子、主轴、侧轴 / 交叉轴

image.png

一、主轴对齐

1.原理: 使用justify-content调节元素在主轴的对齐方式

2.主轴对齐常见的属性值:

(1)flex start:默认值,表示从起点开始依次排列;

(2)flex-end:终点开始依次排列;

(3)center:沿主轴居中排列;

(4)space-around:弹性盒子沿主轴均匀排列, 空白间距均分在弹性盒子两侧;

(5)space-between:弹性盒子沿主轴均匀排列, 空白间距均分在相邻盒子之间;

(6)space-evenly:弹性盒子沿主轴均匀排列, 弹性盒子与容器之间间距相等。

(7)justify-content:stretch:默认效果, 弹性盒子沿着侧轴线被拉伸至铺满容器;

二、测轴对齐

1.原理: 使用align-items调节元素在侧轴的对齐方式。

2.修改侧轴对齐方式属性:

(1)align-items(添加到弹性容器-父级 );

(2)align-self: 控制某个弹性盒子在侧轴的对齐方式(添加到弹性盒子-子级)。

3.侧轴对齐常见的属性值:

(1)justify-content:flex-start:起点开始依次排列;

(2)justify-content:flex-end:终点开始依次排列;

(3)justify-content:center:沿侧轴居中排列;

三、伸缩比

1.原理: 使用flex属性修改弹性盒子伸缩比。

2.注意事项:

(1)只占用父盒子剩余尺寸;

(2)是给子盒子添加这个属性。

3.圣杯布局 圣杯布局是比较典型的布局,所谓的圣杯布局就是左右两边大小固定不变,中间宽度自适应。一般这种布局方式适用于各种移动端顶部搜索部分,这是最常见的,如京东手机版主页面顶部搜索。

4.圣杯布局的核心思路:

(1)两侧盒子写固定大小;

(2)中间盒子 flex: 1; 占满剩余空间。

5.注意:

(1)在flex眼中,标签不再分类。简单说就是没有块级元素,行内元素和行内块元素之分,任何一个元素都可以直接给宽度和高度一行显示,弹性盒子是标准流,可以设置宽高,默认排在一行;

(2)Flex不存在脱标的情况:也就是基本淘汰了浮动,更不用清除浮动;

(3)当然存在兼容性问题,如果不考虑兼容性可以大量使用,如果是移动端则不用考虑直接flex;

(4)caniuse.com/ 可以查看兼容性。

四、主轴更换属性

1.原理: 主轴默认是水平方向, 侧轴默认是垂直方向,使用flex-direction改变元素排列方向

2.常见属性值

(1)主轴排列方向:flex-direction: column; 默认水平

(2)主轴居中:justify-content: center;

(3)侧轴居中:align-items: center;

(4)水平方向排列,默认值:flex-direction: row;

(5)水平方向从右到左排列:flex-direction: row-reverse;

五、弹性盒子换行

1.原理 使用flex-wrap实现弹性盒子多行排列效果; flex-wrap: wrap;

2.常见属性值

flex-wrap: wrap;侧轴居中,多行排列方式的前提条件是有flex布局换行

(1)反向换行:flex-wrap: wrap-reverse;

(2)多行居中:align-content: center;

(3)从起点开始排列 :align-content: flex-start;

(4)从终点开始排列:align-content: flex-end;

(5)盒子上下两边靠边对齐:align-content: space-between;

(6)盒子上下 1:2 进行排列:align-content: space-around;

(7)盒子上下 1:1 进行排列 :align-content: space-evenly;