# CSS 外邊距
**圍繞在元素邊框的空白區域是外邊距。設置外邊距會在元素外創建額外的“空白”。**
**設置外邊距的最簡單的方法就是使用 margin 屬性,這個屬性接受任何長度單位、百分數值甚至負值。**
## CSS margin 屬性
設置外邊距的最簡單的方法就是使用 [margin 屬性](/cssref/pr_margin.asp "CSS margin 屬性")。
margin 屬性接受任何長度單位,可以是像素、英寸、毫米或 em。
margin 可以設置為 auto。更常見的做法是為外邊距設置長度值。下面的聲明在 h1 元素的各個邊上設置了 1/4 英寸寬的空白:
```
h1 {margin : 0.25in;}
```
下面的例子為 h1 元素的四個邊分別定義了不同的外邊距,所使用的長度單位是像素 (px):
```
h1 {margin : 10px 0px 15px 5px;}
```
與內邊距的設置相同,這些值的順序是從上外邊距 (top) 開始圍著元素順時針旋轉的:
```
margin: top right bottom left
```
另外,還可以為 margin 設置一個百分比數值:
```
p {margin : 10%;}
```
百分數是相對于父元素的 width 計算的。上面這個例子為 p 元素設置的外邊距是其父元素的 width 的 10%。
margin 的默認值是 0,所以如果沒有為 margin 聲明一個值,就不會出現外邊距。但是,在實際中,瀏覽器對許多元素已經提供了預定的樣式,外邊距也不例外。例如,在支持 CSS 的瀏覽器中,外邊距會在每個段落元素的上面和下面生成“空行”。因此,如果沒有為 p 元素聲明外邊距,瀏覽器可能會自己應用一個外邊距。當然,只要你特別作了聲明,就會覆蓋默認樣式。
## 值復制
還記得嗎?我們曾經在前兩節中提到過值復制。下面我們為您講解如何使用值復制。
有時,我們會輸入一些重復的值:
```
p {margin: 0.5em 1em 0.5em 1em;}
```
通過值復制,您可以不必重復地鍵入這對數字。上面的規則與下面的規則是等價的:
```
p {margin: 0.5em 1em;}
```
這兩個值可以取代前面 4 個值。這是如何做到的呢?CSS 定義了一些規則,允許為外邊距指定少于 4 個值。規則如下:
* 如果缺少左外邊距的值,則使用右外邊距的值。
* 如果缺少下外邊距的值,則使用上外邊距的值。
* 如果缺少右外邊距的值,則使用上外邊距的值。
下圖提供了更直觀的方法來了解這一點:

換句話說,如果為外邊距指定了 3 個值,則第 4 個值(即左外邊距)會從第 2 個值(右外邊距)復制得到。如果給定了兩個值,第 4 個值會從第 2 個值復制得到,第 3 個值(下外邊距)會從第 1 個值(上外邊距)復制得到。最后一個情況,如果只給定一個值,那么其他 3 個外邊距都由這個值(上外邊距)復制得到。
利用這個簡單的機制,您只需指定必要的值,而不必全部都應用 4 個值,例如:
```
h1 {margin: 0.25em 1em 0.5em;} /* 等價于 0.25em 1em 0.5em 1em */
h2 {margin: 0.5em 1em;} /* 等價于 0.5em 1em 0.5em 1em */
p {margin: 1px;} /* 等價于 1px 1px 1px 1px */
```
這種辦法有一個小缺點,您最后肯定會遇到這個問題。假設希望把 p 元素的上外邊距和左外邊距設置為 20 像素,下外邊距和右外邊距設置為 30 像素。在這種情況下,必須寫作:
```
p {margin: 20px 30px 30px 20px;}
```
這樣才能得到您想要的結果。遺憾的是,在這種情況下,所需值的個數沒有辦法更少了。
再來看另外一個例子。如果希望除了左外邊距以外所有其他外邊距都是 auto(左外邊距是 20px):
```
p {margin: auto auto auto 20px;}
```
同樣的,這樣才能得到你想要的效果。問題在于,鍵入這些 auto 有些麻煩。如果您只是希望控制元素單邊上的外邊距,請使用單邊外邊距屬性。
## 單邊外邊距屬性
您可以使用單邊外邊距屬性為元素單邊上的外邊距設置值。假設您希望把 p 元素的左外邊距設置為 20px。不必使用 margin(需要鍵入很多 auto),而是可以采用以下方法:
```
p {margin-left: 20px;}
```
您可以使用下列任何一個屬性來只設置相應上的外邊距,而不會直接影響所有其他外邊距:
* [margin-top](/cssref/pr_margin-top.asp "CSS margin-top 屬性")
* [margin-right](/cssref/pr_margin-right.asp "CSS margin-right 屬性")
* [margin-bottom](/cssref/pr_margin-bottom.asp "CSS margin-bottom 屬性")
* [margin-left](/cssref/pr_margin-left.asp "CSS margin-left 屬性")
一個規則中可以使用多個這種單邊屬性,例如:
```
h2 {
margin-top: 20px;
margin-right: 30px;
margin-bottom: 30px;
margin-left: 20px;
}
```
當然,對于這種情況,使用 margin 可能更容易一些:
```
p {margin: 20px 30px 30px 20px;}
```
不論使用單邊屬性還是使用 margin,得到的結果都一樣。一般來說,如果希望為多個邊設置外邊距,使用 margin 會更容易一些。不過,從文檔顯示的角度看,實際上使用哪種方法都不重要,所以應該選擇對自己來說更容易的一種方法。
## 提示和注釋
提示:Netscape 和 IE 對 body 標簽定義的默認邊距(margin)值是 8px。而 Opera 不是這樣。相反地,Opera 將內部填充(padding)的默認值定義為 8px,因此如果希望對整個網站的邊緣部分進行調整,并將之正確顯示于 Opera 中,那么必須對 body 的 padding 進行自定義。
## CSS 外邊距實例:
[設置文本的左外邊距](/tiy/t.asp?f=csse_margin-left)
[設置文本的右外邊距](/tiy/t.asp?f=csse_margin-right)
[設置文本的上外邊距](/tiy/t.asp?f=csse_margin-top)
[設置文本的下外邊距](/tiy/t.asp?f=csse_margin-bottom)
[所有的外邊距屬性在一個聲明中。](/tiy/t.asp?f=csse_margin)
## CSS 外邊距屬性
| 屬性 | 描述 |
| --- | --- |
| [margin](/cssref/pr_margin.asp "CSS margin 屬性") | 簡寫屬性。在一個聲明中設置所有外邊距屬性。 |
| [margin-bottom](/cssref/pr_margin-bottom.asp "CSS margin-bottom 屬性") | 設置元素的下外邊距。 |
| [margin-left](/cssref/pr_margin-left.asp "CSS margin-left 屬性") | 設置元素的左外邊距。 |
| [margin-right](/cssref/pr_margin-right.asp "CSS margin-right 屬性") | 設置元素的右外邊距。 |
| [margin-top](/cssref/pr_margin-top.asp "CSS margin-top 屬性") | 設置元素的上外邊距。 |
- HTML 基礎
- HTML 簡介
- 基本的 HTML 標簽 - 四個實例
- HTML 元素
- HTML 屬性
- HTML 標題
- HTML 段落
- HTML 文本格式化
- HTML 編輯器
- HTML CSS
- HTML 鏈接
- HTML 圖像
- HTML 表格
- HTML 列表
- HTML <div> 和 <span>
- HTML 布局
- HTML 表單和輸入
- HTML 框架
- HTML Iframe
- HTML 背景
- HTML 顏色
- HTML 顏色名
- HTML 4.01 快速參考
- HTML 高級
- HTML <!DOCTYPE>
- HTML 頭部元素
- HTML 腳本
- HTML 字符實體
- HTML 統一資源定位器
- HTML URL 字符編碼
- HTML Web Server
- HTML 媒體
- HTML 多媒體
- HTML Object 元素
- HTML 音頻
- HTML 視頻
- HTML XHTML
- XHTML 簡介
- XHTML - 元素
- XHTML - 屬性
- HTML 5 教程
- HTML 5 簡介
- HTML 5 視頻
- HTML 5 Video + DOM
- HTML 5 音頻
- HTML 5 拖放
- HTML 5 Canvas
- HTML5 內聯 SVG
- HTML 5 Canvas vs. SVG
- HTML5 地理定位
- HTML 5 Web 存儲
- HTML 5 應用程序緩存
- HTML 5 Web Workers
- HTML 5 服務器發送事件
- HTML5 Input 類型
- HTML5 表單元素
- HTML5 表單屬性
- CSS 基礎
- CSS 簡介
- CSS 基礎語法
- CSS 高級語法
- CSS 派生選擇器
- CSS id 選擇器
- CSS 類選擇器
- CSS 屬性選擇器
- 如何創建 CSS
- CSS 樣式
- CSS 背景
- CSS 文本
- CSS 字體
- CSS 鏈接
- CSS 列表
- CSS 表格
- CSS 輪廓
- CSS 框模型
- CSS 框模型概述
- CSS 內邊距
- CSS 邊框
- CSS 外邊距
- CSS 外邊距合并
- CSS 定位
- CSS 定位 (Positioning)
- CSS 相對定位
- CSS 絕對定位
- CSS 浮動
- CSS 選擇器
- CSS 元素選擇器
- CSS 分組
- CSS 類選擇器詳解
- CSS ID 選擇器詳解
- CSS 屬性選擇器詳解
- CSS 后代選擇器
- CSS 屬性選擇器詳解
- CSS 后代選擇器
- CSS 子元素選擇器
- CSS 相鄰兄弟選擇器
- CSS 偽類 (Pseudo-classes)
- CSS 偽元素 (Pseudo-elements)
- CSS 高級
- CSS 水平對齊
- CSS 尺寸 (Dimension)
- CSS 分類 (Classification)
- CSS 導航條
- CSS 圖片庫
- CSS 圖像透明度
- CSS2 媒介類型
- CSS 注意事項
- CSS3 教程
- CSS3 簡介
- CSS3 邊框
- CSS3 背景
- CSS3 文本效果
- CSS3 字體
- CSS3 2D 轉換
- CSS3 3D 轉換
- CSS3 過渡
- CSS3 動畫
- CSS3 多列
- CSS3 用戶界面
- Firebug 教程
- Firebug 教程
- 使用Firebug查看和編輯HTML和CSS
- 使用 Firebug 調試 JavaScript
- Firebug頁面概況查看
- Firebug動態執行JavaScript
- Firebug記錄Javascript日志
- Firebug監控網絡情況
- 免責聲明