iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
佛心分享-IT 人自學之術

30 天體驗:從程式菜鳥到前端新手工程師系列 第 12

網頁排版超好用工具!CSS Grid 排版入門 (Day12)

  • 分享至 

  • xImage
  •  

昨天我們學了 Flexbox,發現它很適合排「一條線上的東西」,像是導覽列或橫向的卡片。但如果今天要排一整個「二維的版面」呢?
比如:部落格的主內容 + 側邊欄 + 標題區 + 頁尾...
這時候 Grid 就是最強大的工具啦!

什麼是 CSS Grid?

簡單來說:

• Flexbox = 一維排版(橫向或直向)
• Grid = 二維排版(可以同時控制橫向和直向)

Grid 就像一個「棋盤」,我們先把版面劃成格子,再把元素放到指定的格子裡。

Grid 的常用屬性

(1)容器屬性(外層要先 display: grid)

• grid-template-columns → 設定有幾欄,欄寬是多少

 ◦ grid-template-columns: 200px 200px 200px; → 三欄,每欄 200px
 ◦ grid-template-columns: 1fr 2fr; → 兩欄,右邊是左邊的兩倍大
 ◦ grid-template-columns: repeat(3, 1fr); → 三欄,平均分配

• grid-template-rows → 設定有幾列,高度是多少

 ◦ gap → 欄與列之間的間距
 ◦ gap: 20px;

(2)項目屬性(放在子元素上)

• grid-column → 控制這個項目橫向跨幾欄

 ◦ grid-column: 1 / 3; → 從第一欄跨到第三欄

• grid-row → 控制這個項目直向跨幾列

 ◦ grid-row: 1 / 2;

範例:基本三欄版面

html:

<div class="container">
  <div class="header">Header</div>
  <div class="sidebar">Sidebar</div>
  <div class="main">Main Content</div>
  <div class="footer">Footer</div>
</div>

css:

.container {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-rows: auto 1fr auto;
  gap: 10px;
}

.header {
  grid-column: 1 / 3; /* 跨兩欄 */
  background: lightblue;
}

.sidebar {
  background: lightgreen;
}

.main {
  background: lightpink;
}

.footer {
  grid-column: 1 / 3; /* 跨兩欄 */
  background: lightgray;
}

結果:

• 上面是 Header,橫跨兩欄
• 左邊是 Sidebar,右邊是 Main
• 最下面 Footer 也橫跨兩欄

是不是很像部落格或新聞網站的版型?

小練習

今天試試看用 Grid 做:

1.三欄的產品展示(每個產品在一個格子裡)
2.一個「圖片牆」(像 Instagram)
3.一個簡單的報紙排版(標題、兩欄文字、側邊資訊)

🎯小結

• Grid 幫我們處理二維的排版,適合整個頁面或複雜的版型
• Flexbox 適合單一方向(橫向/直向)的排列
• 常用屬性:

    ◦grid-template-columns / grid-template-rows
    ◦gap
    ◦grid-column / grid-row
    

好的~ 今天學會了 CSS Grid排版技巧,加上之前的flexbox技巧,
恭喜你已經有基本網頁排版技能啦!
明天我們就來學習「RWD 響應式設計技巧」,
讓網頁視覺效果更上一層樓
不管在甚麼裝置都能使用😎
今天也謝謝你的收看>_<~
我是Ting,我們明天見!


上一篇
Flexbox 排版入門 - 網頁排版武功祕笈 (Day11)
下一篇
讓網頁在各裝置都好看的秘訣!RWD 響應式設計技巧 (Day13)
系列文
30 天體驗:從程式菜鳥到前端新手工程師14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言