iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0

繼續介紹grid
grid有個東西與flex-grow一樣透過計算來分配大小,fr

grid-template-columns:1fr 150px 200px;

fr會填充剩下的空間,像是這邊fr的寬度是先-150px-200px-gap後分到的寬度
https://ithelp.ithome.com.tw/upload/images/20251011/20178696TZIotmCnLH.png
fr會因為視窗大小縮放
https://ithelp.ithome.com.tw/upload/images/20251011/20178696lBP6rl3qZp.png
假設剩餘空間是100%,每個fr都會去分配這個100%,下方總共是1+2+3=7個fr,每個fr的比例就是100/7*倍數,

 grid-template-columns:1fr 2fr 3fr;

https://ithelp.ithome.com.tw/upload/images/20251011/20178696LdsyiFDpuw.png

column-gap: 20px;
row-gap: 50px;

可以用column-gap與row-gap來分別設定行間距與列間距
https://ithelp.ithome.com.tw/upload/images/20251011/20178696weEvggWDw5.png
grid-template-area:在使用前需要先給每個物件設定grid-area,grid-area可以隨便給,只要能記得它代表的是誰就好

.div1{background-color: aqua;grid-area: div1;}
.div2{background-color: yellow;grid-area: div2;}
.div3{background-color: coral;grid-area: div3;}
.div4{background-color: lightgreen;grid-area: div4;}
.div5{background-color: lightsalmon;grid-area: div5;}
.div6{background-color: lightblue;grid-area: div6;}
.div7{background-color: pink;grid-area: div7;}
.div8{background-color: lightgray;grid-area: div8;}
.div9{background-color: lightgoldenrodyellow;grid-area: div9;}

    <div class="grid-box">
        <div class="div1">我是1</div>
        <div class="div2">我是2</div>
        <div class="div3">我是3</div>
        <div class="div4">我是4</div>
        <div class="div5">我是5</div>
        <div class="div6">我是6</div>
        <div class="div7">我是7</div>
        <div class="div8">我是8</div>
        <div class="div9">我是9</div>
    </div>

接下來就可以用grid-template-area來自由分配網格,下方表示給第一列分配三格的空間給div1給div2一格的空間

grid-template-areas: "div1 div1 div1 div2";

https://ithelp.ithome.com.tw/upload/images/20251011/20178696sUc4JEDzsL.png
接下來表示給第二列添加div3,4,5,6各一格的空間

grid-template-areas: 
"div1 div1 div1 div2"
"div3 div4 div5 div6"
;

https://ithelp.ithome.com.tw/upload/images/20251011/20178696YFWCA2522m.png
接下來第三列一樣給div3,4,6各一格的空間,但是中間穿插個div7,在同一行的相同div會因此合併

grid-template-areas: 
"div1 div1 div1 div2"
"div3 div4 div5 div6"
"div3 div4 div7 div6"
;

https://ithelp.ithome.com.tw/upload/images/20251011/20178696FMV5AJNwiu.png
最後一列,給div3一格,div8兩格,div9一格

grid-template-areas: 
"div1 div1 div1 div2"
"div3 div4 div5 div6"
"div3 div4 div7 div6"
"div3 div8 div8 div9"
;

完整grid
https://ithelp.ithome.com.tw/upload/images/20251011/20178696vhUfubAbzV.png
當有位置不想分配給網格時可以用.來替代

grid-template-areas: 
"div1 div1 div1 div2"
"div3 . div5 div6"
"div3 div4 . div6"
"div3 div8 div8 div9"
;

https://ithelp.ithome.com.tw/upload/images/20251011/20178696pXyvckBPNH.png

grid-template-areas的分配是挺自由的,但還是有要注意的點,前面可以看到重複出現的網格會合併,但是當網格合併不了時就會無法顯示,所以重複的網格必須貼在一起,下面單把第一列的div1中間再穿插個div2來示範

"div1 div2 div1 div2"

可以看到全部沒了
https://ithelp.ithome.com.tw/upload/images/20251011/20178696ecTHua3qoB.png


上一篇
day26Html grid
下一篇
DAY28Html grid3
系列文
HTML&CSS30天修煉29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言