Flex | 青训营笔记

129 阅读3分钟

CSS3 弹性盒子(Flexible Box 或 Flexbox),是一种用于在页面上布置元素的布局模式,使得当页面布局必须适应不同的屏幕尺寸和不同的显示设备时,元素可预测地运行/列。对于许多应用程序,弹性盒子模型提供了对块模型的改进,因为它不使用浮动,flex容器的边缘也不会与其内容的边缘折叠。

 

Flex的两组核心概念 :容器与项目 主轴与侧轴 一条核心规则 :项目默认情况下永远排列在主轴的正方向上

容器

flex-direction 如何控制主轴是哪一根

flex-direction 如何控制主轴的方向

flex-direction:row;   : x轴正方向

flex-direction:column;   : y轴正方向

flex-direction:row-reverse;   : x轴反方向

flex-direction:column-reverse;  :y轴反方向

 justify-content 富裕空间的管理(主轴)

 justify-content ; 不会给项目区分配空间,只是确定富裕空间的位置

flex-start 主轴的正方向                  

                flex-end   主轴的反方向                 

                center                                   

                space-between                           

                space-around  在项目的两边      

align-items 富裕空间的管理(侧轴)

align-items; 不会给项目区分配空间,只是确定富裕空间的位置                            

         flex-start 侧轴的正方向                 

         flex-end   侧轴的反方向                 

         center                                   

         baseline  跟基线有关

         stretch   等高布局(项目得没有显示的指定高度  auto)

flex-wrap

flex-wrap属性控制了容器为单行/列还是多行/列。并且定义了侧轴的方向,新行/列将沿侧轴方向堆砌。

默认值:nowrap

可选值:nowrap | wrap | wrap-reverse

不可继承

align-content

align-content 属性定义弹性容器的侧轴方向上有额外空间时,如何排布每一行/列。当弹性容器只有一行/列时无作用

默认值:stretch      

  可选值:flex-start | flex-end | center | space-between | space-around | stretch      

  不可继承

flex-flow

flex-flow 属性是设置“flex-direction”和“flex-wrap”的简写

默认值:row nowrap   

可选值: 参考“flex-direction”和“flex-wrap”

不可继承

 

项目

align-self

 align-self 会对齐当前 flex 行中的 flex 元素,并覆盖 align-items 的值

默认值:auto    

可选值:

auto | flex-start | flex-end | center | baseline | stretch

不可继承

order

order 属性规定了弹性容器中的可伸缩项目在布局时的顺序。元素按照 order 属性的值的增序进行布局。拥有相同 order 属性值的元素按照它们在源代码中出现的顺序进行布局

默认值:0   

可选值:数值即可,order越大越后

不可继承

flex-grow

flex-grow 属性定义弹性盒子项(flex item)的拉伸因子。

flex-basis

flex-basis 指定了 flex 元素在主轴方向上的初始大小

默认值 :auto  

不可继承

注意:在flex简写属性中 flex-basis的默认值为0

flex-shrink

flex-shrink 属性指定了 flex 元素的收缩因子  默认值为1

flex

flex 是 flex-grow,flex-shrink,flex-basis 的简写属性

默认值  flex-grow: 0               

        flex-shrink: 1

        flex-basis: auto

可选值

    flex: none; /* 0 0 auto */

    flex:1; /*  flex-grow:1  flex-shrink: 1  flex-basis:0% */

不可继承

Flex的弹性空间管理

flex-grow:

   主轴上的富裕空间 = (主轴上的容器大小 - 所有相邻项目flex-basis的总和)

   可扩展空间 = (主轴上的富裕空间 / 所有相邻项目flex-grow的总和)

   项目最终的空间 = (flex-basis + (可扩展空间 x flex-grow值))

flex-shrink:

    最终项目的大小=flex-basis- (收缩比例 / 收缩比例总和)x 溢出的空间)  错误!

正确:

    1.计算收缩因子与基准值乘的总和  

    2.计算收缩因数

          收缩因数=(项目的收缩因子*项目基准值)/第一步计算总和    

    3.移除空间的计算

           移除空间= 项目收缩因数 x 负溢出的空间

心得体会:

我学习了flex弹性布局,牢记了相关知识点,并且练习了flex的相关小游戏:如跳青蛙等flex游戏

收获颇大,我会继续努力学习下去

热爱前端,热爱代码。相信努力付出就会有回报!!

加油!努力吧!!!