新版flex佈局新增屬性

相對於舊版的flex'佈局而言,新版的flex佈局新增了不少舊版沒有的屬性,進而能夠實現舊版flex實現不了的佈局。web

其實,嚴格來講,在舊版flex中,沒有側軸的概念,項目在容器中不會本身換行,即項目不會按照側軸的方向進行堆砌,可是在新版的flex佈局中,能夠對側軸進行更好的控制。佈局

容器新增屬性

flex-wrap:控制容器可是單行/列,多行/列,而且控制側軸的方向,項目按照側軸的方向進行堆砌學習

        屬性值:nowrap(默認值---沒有側軸)  wrap(側軸正方向)  wrap-reverse(側軸反方向)flex

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

        屬性值:flex-start、flex-end、center、space-between、baseline、stretchit

flex-flow:控制主軸和側軸的方向及其位置(flex-direction和flex-wrap的簡寫形式)io

        屬性值: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,還有一部分的重難點就是收縮和伸縮規則,在計算時,會有一些隱晦,要增強理解。

對比着學習是一種不錯的學習方式,要繼續努力了!!!