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 相同。 不放大,但等分缩小
posted @ 2022-04-11 12:32  CodeFan*  阅读(596)  评论(4编辑  收藏  举报