iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
自我挑戰組

30天小老闆系列(1)--線上排班小工具系列 第 23

DAY23 搞樣式--CSS Gird小進階(間隔/fr)

  • 分享至 

  • xImage
  •  

間隔

有了佈局跟對齊功能之後,現在我們要來了解如何設置行與行/欄與欄之間的間隔囉。

下圖是沒有間隔的狀況,可以看到20個元件(item)滿滿的佔據了整個容器(Container)
https://ithelp.ithome.com.tw/upload/images/20210923/201368339aALytZW7Y.jpg

那要如何取出間隔呢?很簡單

  • column-gap 來設置欄與欄間隔
.container{
    column-gap: 10px;
}

我設置每個欄位之間要間隔10px
https://ithelp.ithome.com.tw/upload/images/20210923/20136833iRxxyWa0u1.jpg
就可以看到圖片上的成果了,可以看到欄與欄之間都取出了10px的間隔

  • row-gap 來設置行與行間隔
.container{
    row-gap: 10px;
}

我設置每行之間要間隔 10px
https://ithelp.ithome.com.tw/upload/images/20210923/20136833IUZBTtZI6S.jpg
就可以看到圖片上的成果了,可以看到行與行之間都取出了 10px 的間隔

你可能會想說,如果行跟欄都要設間隔的話,是不是又要打兩行?真麻煩!
沒問題,懶人包又來了

  • 使用 gap 縮寫
.container{
    gap: 10px 10px;
    /* <grid-row-gap> <grid-column-gap> */
}

我們可以直接用 gap 縮寫,第一個值為行間距,第二個值為欄間距。
如果向上面這樣,兩個值相同的話,也可以只寫一個值就可以囉,像這樣:

.container{
    gap: 10px;
}

上面這兩個縮寫範例,呈現出來就跟下面這個是一樣的意思

.container{
    column-gap: 10px;
    row-gap: 10px;
}

fr是什麼?

今天要提到一個比較特殊的東西,就是 frfr是一種單位,是用來將剩餘的空間依照比例分配使用的
我們直接用範例來看看

今天這個容器(Container)我們給他寫死了 500px 乘 500px 的寬高
目前是等比例分成 5 乘 4 的共 20 個元件(item)的區塊
https://ithelp.ithome.com.tw/upload/images/20210923/20136833xjkzgAi9bP.jpg

目前的程式碼如下:

.container {
  width: 500px;
  height: 500px;
  grid-template-columns: 20% 20% 20% 20% 20%;
  grid-template-rows: 25% 25% 25% 25%;
}

那我們開始嘗試使用 fr 這個單位看看

.container {
  grid-template-columns: 1fr 20% 20% 20% 3fr;
}

我們將第一欄改成 1fr、第五欄改成 3fr,看看會發生什麼事情?
https://ithelp.ithome.com.tw/upload/images/20210923/20136833yYdWDZu1He.jpg

哇,可以看到第一欄變窄了,而第五欄變寬了呢!
那到底發生什麼事情呢?

grid-template-columns: 1fr 20% 20% 20% 3fr
以這段而言,我們將欄位一樣拆成五塊,中間三塊(2、3、4)共佔據了 20% 乘以 3 = 60% 的位置
100% - 60% = 40%,可以看到我們剩餘的位置是 40% 了
使用 fr 便會將剩餘的空間依照比例分配,也就是剩下那 40% 的部分會依照fr的比例做分配

因為我們第一欄改成 1fr、第五欄改成 3fr,總共有 4fr
第一欄的空間就是 1/4,(在 4fr 中占據 1fr)
第五欄的空間就是 3/4,(在 4fr 中占據 3fr)

所以結果就會是,剩下的 40% 空間
分給第一欄 40% 乘以 1/4
分給第五欄 40% 乘以 3/4

以上就是今天的補充說明,感謝各位的觀看~我們明天見


上一篇
DAY22 搞樣式--CSS Gird小進階(對齊)
下一篇
DAY24 搞樣式--用CSS Gird來搞個萬年曆吧(上)
系列文
30天小老闆系列(1)--線上排班小工具30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言