1、盒子模型javascript
標準盒子模型css
從下圖能夠看到標準 w3c 盒子模型的範圍包括 content、padding、border、margin,而且 content 部分不包含其餘部分。html
怪異盒子模型java
從下圖能夠看到 ie 盒子模型的範圍也包括 margin、border、padding、content,和標準 w3c 盒子模型不一樣的是:ie 盒子模型的 content 部分包含了 border 和 pading。jquery
例:一個盒子的 margin 爲 20px,border 爲 1px,padding 爲 10px,content 的寬爲 200px、高爲 50px,css3
假如用標準 w3c 盒子模型解釋,那麼這個盒子須要佔據的位置爲:寬 20*2+1*2+10*2+200=262px、高 20*2+1*2*10*2+50=112px;盒子的實際大小爲:寬 1*2+10*2+200=222px、高 1*2+10*2+50=72px;瀏覽器
假如用ie 盒子模型,那麼這個盒子須要佔據的位置爲:寬 20*2+200=240px、高 20*2+50=70px,盒子的實際大小爲:寬 200px、高 50px。post
那應該選擇哪中盒子模型呢?固然是「標準 w3c 盒子模型」了。怎麼樣纔算是選擇了「標準 w3c 盒子模型」呢?很簡單,就是在網頁的頂部加上 doctype 聲明。假如不加 doctype 聲明,那麼各個瀏覽器會根據本身的行爲去理解網頁,即 ie 瀏覽器會採用 ie 盒子模型去解釋你的盒子,而 ff 會採用標準 w3c 盒子模型解釋你的盒子,因此網頁在不一樣的瀏覽器中就顯示的不同了。反之,假如加上了 doctype 聲明,那麼全部瀏覽器都會採用標準 w3c 盒子模型去解釋你的盒子,網頁就能在各個瀏覽器中顯示一致了。url
<!doctype html>
<html>
<head>
<title>你用的盒子模型是標準w3c盒子模型</title>
<script language="javascript" src="jquery.min.js"></script>
var sbox = $.boxmodel ? "標準w3c":"ie";
document.write("您的頁面目前支持:"+sbox+"盒子模型");
</script>
</head>
<body>
</body>
</html>
說一下css3 box-sizing屬性spa
box-sizing屬性能夠爲三個值之一:content-box(default),border-box,padding-box。
content-box,border和padding不計算入width以內
padding-box,padding計算入width內
border-box,border和padding計算入width以內,其實就是怪異模式了~
<style type="text/css"> .content-box{ box-sizing:content-box; -moz-box-sizing:content-box; width: 100px; height: 100px; padding: 20px; border: 5px solid #E6A43F; background: blue; } .padding-box{ box-sizing:padding-box; -moz-box-sizing:padding-box; width: 100px; height: 100px; padding: 20px; border: 5px solid #186645; background: red; } .border-box{ box-sizing:border-box; -moz-box-sizing:border-box; width: 100px; height: 100px; padding: 20px; border: 5px solid #3DA3EF; background: yellow; } </style>
2、組成盒子模型的標籤類型
在CSS中,html中的標籤元素大致被分爲三種不一樣的類型:塊級元素、行級元素和行內塊元素。
經常使用的塊級元素有:
<div>、<p>、<h1>...<h6>、<ol>、<ul> 設置display:block轉換
特徵:1.一個塊級元素獨佔一行;
2.元素的高度、寬度、行高以及頂和底邊距均可設置;
三、元素寬度在不設置的狀況下,是它自己父容器的100%(和父元素的寬度一致),除非設定一個寬度。
經常使用的行級元素有:
<a>、<span> 設置display:inline轉換
特徵:一、和其餘元素都在一行上;
二、元素的高度、寬度及頂部和底部邊距不可設置;
三、元素的寬度就是它包含的文字或圖片的寬度,不可改變。
四、內聯元素之間的間距問題:當行內元素之間有「回車」、「tab」、「空格」時就會出現間隙。解決方法:寫在一行,之間不要有空格之類的符號。
經常使用的行內塊元素有:
<img>、<input> 設置display:inline-block轉換
特色:一、和其餘元素都在一行上;(而塊狀元素是另起一行)
二、元素的高度、寬度、行高以及頂和底邊距均可設置。