flex弹性布局彻底掌握

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flex弹性布局彻底掌握相关的知识,希望对你有一定的参考价值。

参考技术A flex布局又称为弹性布局,相对于更早出来的float浮动布局更加方便,在兼容性方面还有不足,但随着很多浏览器版本的淘汰,今后的flex布局会被更加广泛使用。在掌握flex布局前先认识两个概念。
1.flex container
2.flex items
如图所示:

flex布局包含两个重要的轴,main axis和cross axis,各自起点、终点分别对应strat和end。了解到flex布局的基本原型后,我们来看看其属性,属性又分为flex container的属性和flex items的属性,如下图:

默认情况下flex的排列方向为main start到main end,当切换到其他属性时:
flex-direction:row-reverse

flex-direction:column-reverse

1.2justify-content属性
justify-content属性表示flex items在main axis上的对齐方式,其值有center、flex-start、flex-end、space-between、space-around。
justify-content:center

justify-content:flex-end

justify-content:space-between
是每个items间隔相等

justify-content:space-around
items间的间隔是边缘间隔的两倍

1.3align-items
align-items属性决定了items在cross axis的对齐方式,属性值有stretch、flex-start、flex-end、center、baseline
stretch属性值为align-items的默认属性:当items在cross axis方向的size为auto时,会将其自动拉伸填充整个flex container,如:

align-items:flex-start
items与cross start对齐

1.4flex-wrap
flex-wrap属性是控制items换行的,其属性值有:nowwrap、wrap、wrap-reverse
flex-wrap:nowwrap默认值不换行,每个items会自动调整宽度填充完整个flex container

1.6align-content

align-content:flex-start(这就解决了上述中换行没有紧挨的问题)

align-content:flex-end

align-content:center

align-content:space-between(两端cross start 与cross end对齐)

align-content:space-around(与justify-content一样)

align-content:space-evenly

二、flex items上的css属性
2.1order
order属性决定items之间的排列的先后顺序,如图将原本排列的模块倒序排列如下所示,可知order越小排在越前。

2.3flex-grow
flex-grow属性用来对items的宽度进行放大,默认值为0,这里3个items的初始宽度为100px,离flex container边缘还有200px,当将3个items的flex-grow设置为1时,则每个items的宽度增加200px的三分之一,如:

【web前端】十分钟彻底弄懂 flex 布局

参考技术A

flex(flexible box:弹性布局盒模型),是 2009 年 w3c 提出的一种可以简洁、快速对页面进行弹性布局的属性。主要思想是给予容器控制内部元素高度和宽度的能力。目前已得到以下浏览器支持:

其中在webkit内核的浏览器中使用时,必须加上 -webkit- 前缀。

使用 flex 布局的容器(flex container),它内部的元素自动成为 flex 项目(flex item)。容器拥有 两根 隐形的轴,水平的 主轴 (main axis),和竖直的 交叉轴 (cross axis)。

主轴开始的位置,即主轴与左边框的交点,称为 main start;主轴结束的位置称为 main end;交叉轴开始的位置,即交叉轴与上边框的交点,称为 cross start;交叉轴结束的位置称为 cross end。

item 按主轴或交叉轴排列,item 在主轴方向上占据的宽度称为 main size,在交叉轴方向上占据的宽度称为 cross size。

注意:使用 flex 容器内元素,即 flex item 的 float,clear、vertical-align 属性将失效。

flex-direction 决定主轴的方向,即项目排列的方向。有四个可能的值:row(默认) | row-reverse | column | column-reverse。

flex-wrap 决定项目在盒中无法撑满的情况下,是否换行。

它是 flex-direction 和 flex-wrap 的集合简写形式,如:row wrap | column wrap-reverse 等。默认值为 row nowrap,即横向排列 不换行。

决定 item 在横向主轴上的对齐方式,可能的值有 flex-start(默认),flex-end,center,space-between,space-around。当为横向主轴时,具体含义如下:

决定 item 在纵向主轴上的对齐方式,可能的值有 flex-start(默认),flex-end,center,space-between,space-around。当为纵向主轴时,具体含义如下:

决定了 item 在横向主轴上的对齐方式,可能的值有 flex-start | flex-end | center | stretch | baseline ,当为横向主轴时,其具体含义为:

决定了 item 在纵向主轴上的对齐方式,可能的值有 flex-start | flex-end | center | stretch | baseline ,当为纵向主轴时,其具体含义为:

该属性定义了当有多根主轴时,即 item 不止一行时,多行在交叉轴上的对齐方式。注意当有多行时,定义了 align-content 后,align-items 属性将失效。align-content 可能值含义如下(假设主轴为垂直方向):

item 的属性在 item 的 style 中设置,item 共有如下六种属性:

order 的值是整数,默认为 0,整数越小,item 排列越靠前,如上图所示。

它定义了当 flex 容器有多余空间时,item 是否放大。默认值为 0,即当有多余空间时也不放大;可能的值为整数,表示不同 item 的放大比例。

定义了当容器空间不足时,item 是否缩小。默认值为 1,表示当空间不足时,item 自动缩小,其可能的值为整数,表示不同 item 的缩小比例。

表示 item 在主轴上占据的空间,默认值为 auto。

flex 属性是 flex-grow、flex-shrink 和 flex-basis 三属性的简写总和。

align-self 属性允许 item 有自己独特的在交叉轴上的对齐方式,它有六个可能的值,默认值为 auto。

以上是关于flex弹性布局彻底掌握的主要内容,如果未能解决你的问题,请参考以下文章

彻底搞懂flex弹性盒模型布局

Flex弹性盒子(一篇带你掌握潮流 Flex 布局)

flex弹性布局学习总结

Flex 弹性布局备忘录

【web前端】十分钟彻底弄懂 flex 布局

28、弹性布局flex