新版flex布局新增属性

相对于旧版的flex'布局而言,新版的flex布局新增了很多旧版没有的属性,进而可以实现旧版flex实现不了的布局。

其实,严格来说,在旧版flex中,没有侧轴的概念,项目在容器中不会自己换行,即项目不会按照侧轴的方向进行堆砌,但是在新版的flex布局中,可以对侧轴进行更好的控制。

容器新增属性

flex-wrap:控制容器但是单行/列,多行/列,并且控制侧轴的方向,项目按照侧轴的方向进行堆砌

        属性值:nowrap(默认值---没有侧轴)  wrap(侧轴正方向)  wrap-reverse(侧轴反方向)

flex-content:控制容器多行、多列的富裕空间的管理

        属性值:flex-start、flex-end、center、space-between、baseline、stretch

flex-flow:控制主轴和侧轴的方向及其位置(flex-direction和flex-wrap的简写形式)

        属性值:row  wrap/ row wrap-reverse/ column wrap/ column wrap-reverse

容器新增属性体现在侧轴上

项目新增属性

order:控制项目在主轴上排列的顺序,值越大项目越往后靠

        属性值:num(数值)

align-self:管理项目自身的富裕空间

        属性值:适用富裕空间管理的属性值

flex-shink:控制项目收缩的空间 (必须时单行,否则会失效)

        属性值:收缩因子(默认值:0)

flex-basis:伸缩规则计算的基准值(默认值为项目的width/height)

        属性值:num(数值)

flex:flex的简写形式

        属性值:num(数值)

        通常flex:1  实现等分布局

flex:1  ---表示---  flex-grow:1   flex-shrink:1   flex-basis:0

实现经典等分布局

伸缩的规则

flex-grow(伸缩—项目空间扩大)

a.可用空间 = 容器大小—所有相邻flex-basis的总和

b.可扩展空间 = 可用空间/所有相邻项目flex-grow的总和

---可扩展空间和富裕空间:二者不同

         当flex-basis的值为默认值(项目的width/height),富裕空间就是可扩展空间;当flex-basis不为默认值,富裕空间是富裕空间,可扩展空间是可扩展空间

c.每项伸缩大小 = 伸缩基准值(flex-basis)+(可扩展空间*flex-grow)

flex-shrink(收缩—项目空间缩小)

a.计算收缩因子*基准值的总和

      a =  每一项flex-basis*flex-shrink之和

b.计算收缩因数

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

     b = ( flex-shrink*flex-basis)/a

c.移除空间的计算

      移除空间 = 项目收缩因数 * 负溢出的空间(收缩嘛所以是负的 好理解一点)

      c = b * 溢出的空间

 

flex布局的注意点

1.侧轴的富裕空间管理

a.单行/列

align-items:单行/列的富裕空间

align-self:管理项目自身的富裕空间(单行/列的富裕空间)  优先级比align-items高

b.多行/列

align-content:多行/列的富裕空间

2.旧版的flex的富裕空间管理

旧版富裕空间管理(-webkit-box-flex):只是管理富裕空间的位置,并不会分配到项目身上

3.容器和项目的概念

容器:外层的包裹器

      布局排列方向:控制主轴的方向和位置(flex-direction)

      富裕空间管理:主轴富裕空间、侧轴富裕空间(单行的 align-items)、多行/多列的富裕空间管理(align-content)

      侧轴:控制多行多列,就存在侧轴的概念了(flex-wrap)

项目:容器里的元素

      项目可以弹性空间的管理:就是把富裕空间按照一定的比列分配给项目

      收缩、伸缩:flex-grow、flex-shrink

      收缩、伸缩的基准:flex-basis

      改变项目的排列的先后顺序(项目永远是按照主轴的正方向排列):order属性

 

      

 

总结

学习了两天的flex布局,主要是要理解四个概念,一个规则。万变不离其宗。

什么是容器?什么是项目?哪个是主轴?哪个是测轴?项目永远按照主轴的正方向排列。

这些是基础中的基础,这里理解了才能往下学习啊。在学习新版flex新增的属性中,主要是学习容器和项目的API,还有一部分的重难点就是收缩和伸缩规则,在计算时,会有一些隐晦,要加强理解。

对比着学习是一种不错的学习方式,要继续努力了!!!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值