關(guān)于更多CSS核心概念的文章請關(guān)注GitHub——CSS核心概念。
當(dāng)對一個文檔進行布局的時候,瀏覽器的渲染引擎會根據(jù)標(biāo)準(zhǔn)之一的 CSS 基礎(chǔ)框盒模型(CSS basic box model),將所有元素表示為一個個矩形的盒子。所有 HTML 元素可以看作盒子,在 CSS 中,Box Model 這一術(shù)語是用來設(shè)計和布局時使用。
CSS 盒模型本質(zhì)上是一個盒子,封裝周圍的 HTML 元素,每個盒子由四個部分(或稱區(qū)域)組成:內(nèi)容(Content),內(nèi)邊距(Padding),邊框(Border),外邊框(Margin)。盒模型允許我們在其它元素和周圍元素邊框之間的空間放置元素。
下面的圖片說明了盒子模型(Box Model):
CSS 盒模型不同組成部分的說明:
盒子模型分為兩種:第一種是 W3C 標(biāo)準(zhǔn)的盒子模型(標(biāo)準(zhǔn)盒模型) 、第二種 IE 標(biāo)準(zhǔn)的盒子模型(怪異盒模型)。
當(dāng)前大部分的瀏覽器支持的是 W3C 的標(biāo)準(zhǔn)盒模型,也保留了對怪異盒模型的支持,當(dāng)然 IE 瀏覽器沿用的是怪異盒模型。怪異模式是“部分瀏覽器在支持 W3C 標(biāo)準(zhǔn)的同時還保留了原來的解析模式”,怪異模式主要表現(xiàn)在 IE 內(nèi)核的瀏覽器。
標(biāo)準(zhǔn)盒模型與怪異盒模型的表現(xiàn)效果的區(qū)別:
注意:W3C 的標(biāo)準(zhǔn)盒模型和IE 怪異盒模型主要區(qū)別是:盒模型中的 width 是否包含 border 和 padding。W3C 的標(biāo)準(zhǔn)盒模型的 width 不包含 border 和 padding,而IE 怪異盒模型的 width 中包含 border 和 padding。
如果是定義了完整的 doctype 的標(biāo)準(zhǔn)文檔類型,無論是哪種模型情況,最終都會觸發(fā)標(biāo)準(zhǔn)模式,如果 doctype 協(xié)議缺失,會由瀏覽器自己界定,在 IE 瀏覽器中 IE9 以下(IE6、IE7、IE8)的版本觸發(fā)怪異模式,其他瀏覽器中會默認(rèn)為 W3C標(biāo)準(zhǔn)模式。
我們還可以通過設(shè)置 HTML 元素的 box-sizing 來設(shè)置盒子模型的解析模式
box-sizing 的屬性值:
當(dāng)設(shè)置為 box-sizing: content-box 時,將采用標(biāo)準(zhǔn)模式解析計算(默認(rèn)模式),當(dāng)設(shè)置為 box-sizing: border-box 時,將采用怪異模式解析計算。如:
<!-- 將 div 設(shè)置為怪異盒模型解析模式 -->
<div style="box-sizing: border-box;"></div>
關(guān)于更多CSS核心概念的文章請關(guān)注GitHub——CSS核心概念。