下文引自HTML CSS——margin和padding的學習,做者fengyv,不過加入了一些我的的見解。css
你在學習margin和padding的時候是否是懵了,——什麼他孃的內邊距,什麼他孃的外邊距。呵呵呵,剛開始我也有點不理解,後來經過查資料學習總算弄明白了,如今我來談一下本身對margin和padding的理解:html
1、什麼是邊距瀏覽器
CSS中的邊距指的是當前元素border與周圍其它元素border的距離(或者稱爲空間)。less
2、什麼是內邊距,什麼是外邊距。(用代碼來講明)佈局
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> <style type="text/css"> body { margin: 0px; } .test1 { width: 200px; height: 200px; border: 10px solid red; } .test2 { margin-top: 50px; padding-top: 50px; width: 200px; height: 200px; border: 10px solid gray; } .test2_son { width: 80px; height: 100px; border: 20px solid blue; } </style> </head> <body> <div class="test1">test1</div> <div class="test2"> <div class="test2_son">test2_son</div> </div> </body> </html>
(下面對運行結果進行詳解,圖示以下:)post
(經過上圖來理解做者接下來寫的文字,應該很容易理解)學習
①外邊距:外邊距指的是margin做用元素(這裏是class值爲test2的div)邊框外延距離另外一個元素邊框外延(若是另外一個元素和margin做用元素同級(這裏是class值爲test1的div))或內延(若是另外一個元素是margin做用元素父級(此話不甚理解???))的距離,如上圖;ui
②內邊距:內邊距指的是margin做用元素(這裏是class值爲test2的div)邊框內延距離其子元素邊框外延的距離,如上圖;url
③內邊距和外邊距是針對於其做用的元素和其餘元素來說的,某一元素的內邊距在另外一個元素看來有多是外邊距,好比:class值爲test2 div的內邊距在class值test2_test(做者寫錯了,應爲test2_son) div元素看來就是外邊距,因此上面代碼也能夠這樣寫:將class值爲test2的div樣式列表中「padding-top:40px;」去掉,class值爲test2_test(同上) div元素添加「margin-top:40px;」——這樣的效果和代碼2-1(示例)是同樣的。spa
3、margin和padding的屬性值
①它們的默認值都是0;它們的屬性值均可覺得auto——margin做用的元素由瀏覽器計算外邊距,padding做用的元素由瀏覽器計算內邊距;均可經過設定屬性值爲inherit而繼承父元素邊距——margin繼承父元素外邊距,padding繼承父元素內邊距,但因爲inherit在任何的版本的 Internet Explorer (包括 IE8)都不支持,因此也就沒有學習的必要了。
②margin容許指定負的外邊距值,不過使用時要當心;padding不容許指定負邊距值。
③margin和padding的屬性值均可以有1個、2個、3個和4個:(接下來就不按做者的表了,下文就詳解margin和padding)
此文引自CSS padding margin border屬性詳解,做者Ruthless
這篇文章真是寫的太好,故要認真品味。
圖解CSS padding、margin、border屬性:(從網上又找到兩幅圖,也示之)
(注意:從上圖很明顯可看出,CSS width是不包含border的,甚至不包含padding!)
W3C組織建議把全部網頁上的對像都放在一個盒(box)中,設計師能夠經過建立定義來控制這個盒的屬性,這些對像包括段落、列表、標題、圖片以及層。盒模型主要定義四個區域:內容(content)、內邊距(padding)、邊框(border)和外邊距(margin)。對於初學者,常常會搞不清楚margin,background-color,background-image,padding,content,border之間的層次、關係和相互影響。這裏提供一張盒模型的3D示意圖,但願便於你的理解和記憶。
margin:層的邊框之外留的空白
background-color:背景顏色
background-image:背景圖片
padding:層的邊框到層的內容之間的空白
border:邊框
content:內容
接下來將講述HTML和CSS的關鍵——盒子模型(Box model)。理解Box model的關鍵即是margin和padding屬性,而正確理解這兩個屬性也是學習用css佈局的關鍵。
注: 爲何不翻譯margin和padding?
緣由一: 在漢語中並無與之相對應的詞語;
緣由二: 即便有這樣的詞語, 因爲在編寫css代碼時, 必須使用margin和padding, 若是咱們總用漢語詞語代替其來解釋的話, 到了實際應用時容易混淆margin和padding的概念。
若是有一點Html基礎的話,就應該瞭解一些基本元素(Element),如p、h1~h六、br、div、li、ul、img等。若是將這些元素細分,又能夠分別爲頂級(top-level)元素、塊級(block-level)元素和內聯(inline)元素。
塊級元素是構成一個html的主要和關鍵元素,而任意一個塊級元素都可以用Box model來解釋說明。
Box Model: 任意一個塊級元素均由content(內容)、padding、background(包括背景顏色和圖片)、border(邊框)、margin五個部分組成。
立體圖以下:
平面圖以下:
根據以上兩圖,相信你們對於Box model會有個直觀的認識。
如下說明margin和padding屬性:
一、margin: 包括margin-top、margin-right、margin-bottom、margin-left,控制塊級元素之間的距離,它們是透明不可見的。根據上、 右、下、左的順時針規則,能夠寫爲 margin: 40px 40px 40px 40px;
爲便於記憶,請參考下圖:
當上下、左右margin值分別一致, 可簡寫爲:
margin: 40px 40px;
前一個40px表明上下margin值,後一個40px表明左右margin值。
當上下左右margin值均一致,可簡寫爲:
margin: 40px;
二、Padding: 包括padding-top、padding-right、padding-bottom、padding-left,控制塊級元素內部,content與border之間的距離,其代碼,簡寫請參考margin屬性的寫法。
至此,咱們已經基本瞭解margin和padding屬性的基本用法。可是,在實際應用中,卻老是發生一些讓你琢磨不透的事,而它們又或多或少的與margin有關。
注: 當你想讓兩個元素的content在垂直方向(vertically)分隔時,既能夠選擇padding-top/bottom,也能夠選擇margin-top/bottom,再此Ruthless建議你儘可能使用padding-top/bottom來達到你的目的,這是由於css中存在Collapsing margins(摺疊的margins)的現象。
Collapsing margins: margins摺疊現象只存在於臨近或有從屬關係的元素,垂直方向的margin中。(小白仍是不甚理解Collapsing margins——margins摺疊現象)
詳細說明以下:
若是隻提供一個,將用於所有的四條邊;
若是提供兩個,第一個用於上-下,第二個用於左-右;
若是提供三個,第一個用於上,第二個用於左-右,第三個用於下;
若是提供所有四個參數值,將按上-右-下-左的順序做用於四邊。
body { padding: 36px;} //對象四邊的補丁邊距均爲36px body { padding: 36px 24px; } //上下兩邊的補丁邊距爲36px,左右兩邊的補丁邊距爲24px body { padding: 36px 24px 18px; } //上、下兩邊的補丁邊距分別爲36px、18px,左右兩邊的補丁邊距爲24px body { padding: 36px 24px 18px 12px; } //上、右、下、左補丁邊距分別爲36px、24px、18px、12px