Grid布局和Flex布局


Flex布局(彈性布局)

Flex是彈性布局,用來為盒狀模型提供最大的靈活性,任何一個容器都可以指定為Flex布局。行內元素也可以使用Flex布局。

采用Flex布局的元素,稱為Flex容器。flex item項目是Flex布局的元素,簡稱項目。

容器:水平的主軸(main axis)和垂直的交叉軸(cross axis),單個項目占據的主軸空間叫做main size,占據的交叉軸空間叫做cross size。

容器的屬性:

1、flex-direction:決定主軸的方向(即項目的排列方向),注意main-size的位置和主軸方向一致。

.box {flex-direction:row(row-reverse、column、column-reverse);}

row(默認值):主軸為水平方向,起點在左端。

row-reverse:主軸為水平方向,起點在右端。

column:主軸為垂直方向,起點在上沿。

column-reverse:主軸為垂直方向,起點在下沿。

2、flex-wrap:換行(如何換行)

.box{flex-wrap:nowrap(wrap、wrap-reverse)}

nowrap:不換行。

wrap:換行,第一行在上方。

wrap-reverse:換行,第一行在下方。

3、justify-content:定義項目在主軸上的對齊方式

.box{justify-content:flex-start(flex-end、center、space-between、space-around)}

flex-start(默認值):左對齊

center:居中

space-between:兩端對齊,項目之間的間隔都相等

space-around:每個項目兩側的間隔相等,所有,項目之間的間隔比項目與邊框的間隔大一倍

4、align-items:定義項目在交叉軸上如何對齊

.box{align-items:flex-start(flex-end,center、baseline、stretch)}

flex-start:交叉軸的起點對齊

flex-end:交叉軸的終點對齊

center:交叉軸的中點對齊

baseline:項目的第一行文字的基線對齊

5、algin-content:定義了多根軸線的對齊方式,如果項目只有一根軸線,該屬性不起作用

.box{align-content:flex-start(flex-end、center、stretch、space-between、space-around)}

flex-start:與交叉軸的起點對齊。

flex-end:與交叉軸的終點對齊。

center:與交叉軸的終點對齊。

space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布

space-around:每根軸線兩側的間隔都相等。

stretch(默認值):軸線占滿整個交叉軸。

項目的屬性:

1、order:定義項目的排列順序,數值越小,排列越靠前,默認0,。

.item{order:<integer>;}

2、flex-grow:定義項目的放大比例,默認為0,即如果存在剩余空間,也不放大。

.item{flex-grow:<number>;}

3、flex-shrink:定義了項目的縮小比例,默認為1,即空間不足,該項目縮小,如果所有項目的flex-shrink屬性都為1,當空間不足時,都將等比例縮小,如果一個項目的flex-shrink

屬性為0,其他項目都為1,則空間不足時,前者不縮小,負數對該屬性無效。

4、flex-basis:定義了在分配多余空間之前,項目占據的主軸空間,瀏覽器根據這個屬性,計算主軸是否有多余空間,它的默認值為auto,即項目的本來大小。

5、align-self:允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性,默認值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等於stretch。

Grid 布局 ,網格布局

Grid布局與Flex布局有一定的相似性,都可以指定,容器內部多個項目的位置

Flex布局:軸線布局,可以看做是一維布局。

Grid布局:則是將容器划分分成“行”和“列”,產生單元格,指定的項目所在的單元格,可以看做是二維布局。

1、grid-template-columns/row 屬性

columns  是定義了每一列的寬

row  是定義了每一行的高

2、repeat()  兩個參數  (重復n次,重復的值)

 .box{

  display:grid;

  grid-template-columns:repeat(3,33.33%)

  grid-template-row:repeat(3,33.33%)

}

3、可以給網格線起名字

.box{

  display:grid;

  grid-template-columns:[ ]  100px  [ ]  100px  [ ]  100px  [ ]

  grid-template-row:[ ]  100px  [ ]  100px  [ ]  100px  [ ]

}

4、grid-row-gap屬性,grid-columns-gap屬性

grid-row-gap設置行與行的間隔(行間距)、

grid-columns-gap設置列與列的間隔(列間距)

5、網格布局允許指定區域(area),一個區域由單個或者多個單元格組成

grid-templace-area:header  header  header

           main      main     sidebar

           footer    footer     footer

如果某些區域不需要利用,則用點(.)表示。

6、justify-items,align-items,place-items 屬性

justify-items 設置單元格內容的水平位置

align-items 設置單元格內容的垂直位置

7、justify-content,align-content,place-content

justify-content 整個內容區域在容器里面的水平位置

align-content 整個內容區域在容器里面的垂直位置

8、grid-auto-columns,grid-auto-rows屬性

有時候,一些項目的指定位置,在現在有網格的外部,比如3行,但是某一個項目指定在第5行,這時瀏覽器會自動生成多余的網格。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM