display:grid
也可成爲行內元素 display:inline-grid
html
tip:設爲網格佈局之後,容器內的子元素的 float 、 display:inline-block/table-cell , vertical-align 和 column-*等 各項設置屬性都將失效
grid-template-columns
定義每一列的列寬
grid-template-rows
定義每一行的行高瀏覽器
.container{ display:grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px; }
grid中對屬性賦提供了多種方式 上面能夠使用33.3% , 33.3% , 33.3% tip: 當重複的數值過多的時候還能夠使用repeat()
這個方法主要用於過多重複,簡化代碼使用
其接受兩個參數函數
第一個爲重複的次數佈局
第二個爲重複的值spa
.container{ display:grid; grid-template-columns: repeat(3,100px);/*repeat(3,33.3%)也是一種寫法*/ grid-template-rows: repeat(3,100px); }
但repeat()
並非只能夠寫重複的單個值,它也能夠寫成重複模式3d
例:code
#contanner{ display: grid; grid-template-columns:repeat(3,80px 20px 50px); grid-template-rows:90px; }
有時單元格的大小是固定的,可是容器的大小不肯定。若是但願每一列或者每一行容納儘量多的單元格,這時能夠使用auto-fill
關鍵字表示自動填充。htm
與上面auto-fill相似,可是有不一樣的地方(詳見之後)blog
爲了方便表示比列,網格佈局提供了fr
關鍵字(fraction)的縮寫
若是兩列的寬度爲1fr
和2fr
,就表示後者是前者的兩倍
函數產生一個長度範圍,表示長度就在這個範圍,接受兩個參數 最小和最大
.container{ width:200px; display:grid; grid-template-columns: 1fr 1fr minmax(100px , 1fr); grid-template-rows: repeat(3,100px); }
例:grid-template-columns: 50px auto 50px;
第二列的寬度基本上是等於該列單元格最大寬度,除非在單元格內容設置了min-width
,且這個值大於最大寬度。
grid-row-gap
設置行與行的間隔(行間距)
grid-column-gap
設置列與列的間隔(列間距)
grid-gap
簡寫 (前綴 grid- 可去)
gap: <grid-row-gap> <grid-column-gap>; 若是grid-gap 省略了第二個值,瀏覽器會默認第二個值會等於第一個值
justify-items
屬性設置單元格內容的水平位置(左中右)
align-items
屬性設置單元格內容的垂直位置(上中下)
屬性以下:
start
:對齊單元格的起始邊緣
end
:對齊單元格的結束邊緣
center
:單元格內部居中
stretch
:拉伸、佔滿單元格的整個寬度(默認值)
place-items
爲簡寫
place-items : <align-items> <jsutify-items>
justify-content
屬性是整個內容區域在容器裏面的水平位置(左中右)
align-content
屬性是整個內容區域的垂直位置(上中下)
屬性以下:
start
:對齊容器的起始邊框
end
:對齊容器的結束邊框
center
:容器內部居中
stretch
:項目大小沒有指定時,;拉伸佔據整個網格容器。
space-around
:每一個項目兩側的間隔相等,因此,項目之間的間隔比項目與容器邊框的間隔大一倍
space-bewteen
: 項目與項目的間隔相等,項目與容器邊框之間沒有間隔
space-evenly
: 項目與項目之間的間隔相等,項目與容器邊框之間也是同長度的間隔
place-content
簡寫
place-content : <align-content> <justify-content>
有時,一些項目的指定位置,在現有網格的外部,好比網格只有三列,可是某一個項目指定在第五行。這時,瀏覽器會自動生成多餘的網格,以便放置項目
上面對grid-auto-columns/rows
的賦值,那些值表明着網格線,columns是從左到右的算起,rows是從上到下算起(詳細請看);
目前各大瀏覽器已經能夠有效的支持grid屬性,可是這個屬性對於低版本瀏覽器不支持,對於IE瀏覽器不支持,可是目前的IE Edge新版也是能夠支持這項屬性。
下圖爲各大瀏覽器支持狀況:
本文參考http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html