css盒模型 margin padding border們你真的懂麼?

什麼是盒模型?  規定了元素框處理元素內容內邊距邊框外邊距的方式。
咱們常說有兩種盒模型 即「標準 W3C 盒子模型」和「IE 盒模型」。但一般會加 DOCTYPE 聲明,在全部瀏覽器中就都顯示「標準 W3C 盒子模型」。下面以標準爲例: css

首先要弄清楚的問題:實際大小的計算
在標準盒模型中     實際寬度 = width+margin+border+padding (高度同樣) 
例如 一個元素寬60px,通過 padding = 5px,border = 5px,margin = 10px,渲染後的實際寬度 = 60+5*2+10*2+5*2 = 100px;
瀏覽器

不多有人關心的css盒模型的三維圖,如圖

url

好吧,我開始也不能理解這個東西又啥用...可是這個真的有用
我遇到過這樣的狀況,有一張圖片寬300做爲背景圖片,那麼我給定一個 div 300的寬度,而後要求內容裏這個框有10px的距離, 再給這個框一個padding:10px; 你以爲這個有什麼問題麼?好吧 無圖無真相  
spa

我給一個div加了以下樣式,背景圖片大小300*100px 你以爲出現的會是怎麼樣的? .net

.test{
 width:300px;
 height:100px;
 padding:10px;
 border:1px solid #000;
 background:url(7.png) no-repeat 0 0;
 color:#fff;

真相 如圖..這是爲何 看着前面兩個盒模型本身去思考下吧  當時別人說我也硬是沒懂 要本身體會到了就到了.... code


再說下如何設定這幾個值
blog

1,邊框 border
    邊框屬性:樣式,寬度,和顏色

    border-style: 沒有樣式,就沒有邊框
    經常使用樣式包括:solid(實線),dashed(虛線),none(無)
    能夠統一聲明,也能夠分別聲明
    四條邊框分別是:border-top-style,border-right-style,border-bottom-style,border-left-style
    統一聲明:border-style

    border-width: 
默認寬度是4px
    一樣能夠統一聲明,也能夠分別聲明
    四條邊框分別是:border-top-width,border-right-width,border-bottom-width,border-left-width
    統一聲明:border-width

    border-color: 默認是黑色
    也是能夠統一聲明,也能夠分別聲明
    四條邊框分別是:border-top-color,border-right-color,border-bottom-color,border-left-color
    統一聲明:border-color
    
這三個屬性都有同樣的設定規則
div{border-style:solid dashed none dashed;} 這樣寫 上右下左 分別是solid dashed none dashed
div{border-style:solid dashed;} 這樣寫 上下是solid 左右是dashed
div{border-style:solid;} 這樣寫 4條邊框都是 solid
  border-width和  border-color規則同樣;
圖片

經常使用的寫法是這樣 div{border: 1px solid #fff}  等同於
 div{ border-width:1px;
        border-style:solid;
        border-colod:#fff;
} it

2,邊距 margin 和 padding class

    和邊框同樣,能夠統一聲明和分開聲明
    maigin
    margin-top,margin-rignt,margin-bottom.margin-left;
     div{margin: 1px 2px 3px 3px;} 
        這樣寫 上右下左的順序margin-top,margin-rignt,margin-bottom.margin-left分別是 1px,2px,3px,4px.        div{margin: 1px 2px;} 
        這樣寫 margin-top 和 margin-bottom 是1px, margin-right 和 margin-left是2px
    div{margin: 3px;} 
        這樣就是上下左右都是3px.
    padding規則和margin同樣....

最後來看看盒模型調皮的地方吧,,,,。。。頭疼....遇到過的問題

    問題一: 一個div{margin-bottom: 10px},另外一個div{margin-top: 5px},兩個div上下相鄰時,之間的距離是10px!
   解決:這個是瀏覽器margin重疊的問題,只會顯示較大的margin值,要兩個疊加用padding或者一個div 直接15px。轉載了一篇關於這個的文章 有點繞,要弄清楚的能夠看看 http://my.oschina.net/u/582995/blog/98171....

    問題二:IE下margin失效的問題,只知道是haslyout惹的禍
    解決方案:有幾個方法取,最簡單的:父元素 zoom:1

    問題三:                        

相關文章
相關標籤/搜索