iT邦幫忙

2025 iThome 鐵人賽

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

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

📦 CSS 盒模型 & 排版,網頁元素是怎麼排排站的?(Day 10)

  • 分享至 

  • xImage
  •  

你有沒有想過,為什麼一個 < div > 看起來像是一個方塊?
其實在 CSS 世界裡,所有元素都是一個「盒子」(Box)。
這個「盒子」就像積木,你要怎麼堆疊、怎麼排列,全靠 盒模型。

什麼是盒模型 (Box Model)?

每個 HTML 元素,都可以想像成有四層「外套」:

┌───────────────┐
│   margin      │  (外距)
│ ┌───────────┐ │
│ │  border   │ │  (邊框)
│ │ ┌───────┐ │ │
│ │ │padding│ │ │ (內距)
│ │ │       │ │ │
│ │ │content│ │ │ (內容:文字/圖片) 
│ │ └───────┘ │ │
│ └───────────┘ │
└───────────────┘

1. Content (內容區)

放文字、圖片的地方。
例如:width: 200px; height: 100px; 設定的就是內容大小。

2. Padding (內距)

內容跟邊框之間的空間。像衣服裡的「墊肩」。

p {
  padding: 20px;
}

👉 文字會離邊框更遠,看起來不擁擠。

3. Border (邊框)

外套的框線。

p {
  border: 2px solid black;
}

4. Margin (外距)

元素與元素之間的距離。像人與人之間的「安全距離」。

p {
  margin: 20px;
}

Padding vs Margin:怎麼分?

• Padding:內容跟自己邊框的距離。
• Margin:自己跟其他盒子的距離。

👉 如果把盒子想像成「一張桌子」:

• Padding = 桌子上放東西的留白
• Margin = 桌子跟隔壁桌的距離

Margin/ Padding 的寫法

1.四邊一樣

margin: 20px;
padding: 10px;

2.上下、左右

margin: 20px 10px;  /* 上下 20px,左右 10px */

3.上、左右、下

margin: 10px 20px 30px;

4.上、右、下、左 (順時針)

margin: 10px 15px 20px 25px;

5.單邊設定

margin-top: 10px;
margin-left: 20p

Block vs Inline 元素

排版的另一個關鍵:元素有兩種「性格」。

Block (區塊元素)

• 預設佔滿一整行
• 可以設定寬高
• 例如:div, p, h1-h6
👉 就像一塊積木,會自動換行。

Inline (行內元素)

• 跟其他元素擠在同一行
• 不能設定寬高(只能靠內容撐開)
• 例如:span, a, strong
👉 就像文字裡的一個字。

Inline-block (混合型)

• 跟別人同一行
• 又能設定寬高
👉 很常用在按鈕排版。

小範例:三張卡片排版

HTML:

<div class="card">卡片1</div>
<div class="card">卡片2</div>
<div class="card">卡片3</div>

CSS:

.card {
  display: inline-block; /* 可以水平排 */
  width: 150px;
  height: 100px;
  margin: 10px;
  padding: 20px;
  border: 2px solid #333;
  background: #f4f4f4;
}

👉 三張卡片就會乖乖排成一排,中間還會有距離。

Day 10 小結

今天我們學到:

• 盒模型 (Box Model) 的四層:Content、Padding、Border、Margin
• Padding vs Margin 的差別
• Block / Inline / Inline-block 的行為

掌握這些,你就能更精準控制「元素的間距 & 排版」!
明天,我們就來聊聊排版神器:Flexbox,讓你的網頁排版更聽話、更彈性~
我是Ting,謝謝你的收看,我們明天見吧!


上一篇
要怎麼讓網頁更有個性? 教你用 CSS 打造顏色、字體與背景 (Day9)
下一篇
Flexbox 排版入門 - 網頁排版武功祕笈 (Day11)
系列文
30 天體驗:從程式菜鳥到前端新手工程師11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言