前言
在上一篇我們知道如何使用 CSS Grid 的固定版面樣式,這一篇就來筆記一下如何變化
子層指定格線
上一篇我們在父層使用 grid-template-areas
設定版面位置,但如果使用這個方式,你不能交錯也不能重疊,所以我們可以使用子層來指定欄位位置
grid-column-start, grid-column-end, grid-row-start, grid-row-end
- grid-column-start : 欄線開始
- grid-column-end : 欄線結束
- grid-row-start : 列線開始
- grid-row-end : 列線結束
我們設定 grid-template-columns
, grid-template-rows
1 | .container { |
產生的圖如下圖
圖片來自CSS-Tricks
從圖上可以了解,線是從最外圍(最起點)開始算到另一邊的最外圍(最終點),所以以圖片來看 column
一共有6條線,而 row
有4條線
得到線條的方式有
1 | .item { |
- line : 用數字表示 物件 所在的線
- span
number
: 物件所佔用的欄位數;使用此方式,會計算到佔用欄位數的下一行 - span
name
: 物件所在的 grid 名稱;使用此方式,會計算到物件 gird 名稱的下一行 - auto 自動
以上面圖為範例就能這樣使用
1 | .item { |
只橫跨一個欄位
另外,如果你只想要橫跨一個欄位的話,可以使用 start 或者 end 其中一個就好
1 | .item-a{ |
負數
除了正數以外,也可以只用負數計算
1 | .item-b{ |
grid-column, grid-row
- grid-column :
grid-column-start
+grid-column-end
的結合,使用 “/“ 連結在一起 - grid-row :
grid-row-start
+grid-row-end 的結合
,使用 “/“ 連結在一起
1 | .item-c { |
圖片來自CSS-Tricks
grid-area
grid-area
不只能自訂區域名稱給予grid-template-areas
定義位置,也能指定 grid 線數設定範圍
1 | .item-d { |
以上給個範例:
父層自動欄高/自動列高
grid-template-columns
, grid-template-rows
是需要設定欄位寬高,但如果格子很多的話,這樣就不方便了,所以我們就可以使用父層自動計算欄高/列高
grid-auto-columns grid-auto-rows
自動生成的欄位的大小
1 | .container { |
首先我們給予的長寬
1 | .container { |
意思就是每個欄位寬為60px,高都是90px;
圖片來自CSS-Tricks
這時我們再定義子層的配置
1 | .item-a { |
圖片來自CSS-Tricks
你會發現即使 item-b
的欄,我們從未定義第5或6列,但因為 grid-auto-columns
的關係,中間產生了隱藏格線,484很神奇~
結論
最後整理上面所學到的屬性:grid-column-start
: 子層欄線起始grid-column-end
: 子層欄線結束grid-row-start
: 子層列線起始grid-row-end
: 子層列線結束grid-column
: 子層欄線起始/結束grid-row
: 子層列線起始/結束grid-auto-columns
: 自動欄寬grid-auto-rows
: 自動列高
參考文獻
CSS GRID / CSS格線好好玩【完整版】 | CSS教學 | CSS格線
CSS Grid 屬性介紹
A Complete Guide to Grid
圖片來自CSS-Tricks