flex弹性布局 超详细

flex弹性布局 超详细

一、弹性布局的优缺点

优点:

代码简洁易懂,使用方面;

在移动端开发中最为广泛,操作方面,布局简单;

很大程度上替代了传统的复杂布局,不用一个像素一个像素地调;

能让页面布局快速达到自己想要的效果。

缺点:

PC 端浏览器兼容性比较差,版本低一点的浏览器可能实现不了自己想要的布局效果;

为父盒子设置 flex 布局后,子元素的 float、clear 和 vertical-align 属性将失效。

二、关于flex

1、什么是flex:flex 是 Flexible Box 的缩写,意为”弹性布局”。

2、flex的作用:flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间。

3、flex布局原理:通过给父盒子(容器)添加 flex 属性,来控制子盒子(项目)的位置和排列方式。

三、如何使用flex

1、使用flex布局只需要在最外层容器设置 display:flex; 即可。

2、我们可以将整个网页看成一个flex容器。

3、采用flex布局称为flex容器,所有子容器自动生成容器成员称为flex项目。

四、容器属性

1. justify-content 属性:用于设置或检索弹性盒子元素在主轴(横轴,X轴)方向上的对齐方式。

(1)justify-content: flex-start; /* 默认值,从行首起始位置开始排列 */

(2)justify-content: center; /* 元素沿横轴居中排列 */

(3)justify-content: flex-end; /* 元素沿横轴从行尾位置开始排列 */

(4)justify-content: space-between; /* 均匀排列每个元素,首个元素放置于起点,末尾元素放置于终点 */

(5)justify-content: space-around; /* 均匀排列每个元素,每个元素周围分配相同的空间 */

(6)justify-content: space-evenly; /* 均匀排列每个元素,每个元素之间的间隔相等 */

(7)justify-content: stretch; /* 均匀排列每个元素, 'auto'-sized 的元素会被拉伸以适应容器的大小 */

(8)/* 溢出对齐方式 */

justify-content: safe center;

justify-content: unsafe center;

2. align-items 属性:定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。

(1)align-items:stretch; /*默认值,元素被拉伸以适应容器。*/

(2)align-items:center; /*元素位于容器纵轴的中心,弹性盒子元素在该行的纵轴上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。*/

(3)align-items:flex-start; /*元素位于容器纵轴的开始位置。*/

(4)align-items:flex-end; /*元素位于容器纵轴的结束位置。*/

/*小提示*/

/*同时使用 align-items:center; 和 justify-content: center; 能很好地实现元素水平和垂直居中,这也是项目中经常见的*/

3. flex-direction 属性:规定灵活项目的方向。

(1)flex-direction:row; /*默认值,灵活的项目将水平显示,正如一个行一样。*/

(2)flex-direction:row-reverse; /*与 row 相同,但是以相反的顺序。*/

(3)flex-direction:column; /*灵活的项目将垂直显示,正如一个列一样。*/

(4)flex-direction:column-reverse; /*与 column 相同,但是以相反的顺序。*/

4. flex-wrap 属性:规定flex容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。

(1)flex-wrap:nowrap; /*默认值,规定灵活的项目不拆行或不拆列,同时等分容器宽度。*/

(2)flex-wrap:wrap; /*规定灵活的项目在必要的时候拆行或拆列。*/

(3)flex-wrap:wrap-reverse; /*规定灵活的项目在必要的时候拆行或拆列,但是以相反的顺序。*/

/*扩展*/

/*flex-flow 属性是 flex-direction 和 flex-wrap 属性的复合属性。*/

五、项目(元素)属性

1. order 属性:设置或检索弹性盒模型对象的子元素出现的顺序。

描述

number

默认值是 0。规定灵活项目的顺序。

initial

设置该属性为它的默认值。

inherit

从父元素继承该属性。

2. flex-grow 属性:设置或检索弹性盒子的扩展比率(用于决定元素在有剩余空间的情况下是否扩大占满剩余空间)。

//取值:默认为 0 ,即不放大使用默认的自身宽度;

//取值为 1 时,将会放弃自身的宽度而占满容器剩余的空间,若有多个元素取值为 1 ,则平均分配容器剩余空间。

3. flex-shrink 属性:指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值(用于决定容器空间不足时,是否缩放元素)。

//取值:默认值为 1 ,即容器空间不足时,元素也不缩放

//取值:值为 0 ,即容器空间不足时,元素放弃自身原有的宽度,进行缩放以自适应容器

4. flex-basis 属性:设置或检索弹性盒伸缩基准值。(用于设置项目宽度)

//取值:默认 auto ,项目保持默认的宽度,或以width为自身的宽度

//取了有效值后,权重是最高的,会覆盖默认的或width的宽度

要点:flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性

描述

作用

auto

与 1 1 auto 相同。

等分放大缩小

none

与 0 0 auto 相同。

不放大,但等分缩小

📌 相关推荐