CSS盒子模型分為兩種:標準盒子模型和IE盒子模型。在標準盒子模型中,盒子的尺寸由它的內容(content)、內邊距(padding)、邊框(border)和外邊距(margin)組成。而在IE盒子模型中,盒子的尺寸只包含了內容和邊框,內邊距和外邊距則會增加盒子的尺寸。
在進行盒子尺寸計算時,通常會遇到優先級的問題。我們可以用CSS的box-sizing屬性來指定盒子模型的優先級,使尺寸計算更加靈活。
/* 標準盒子模型 */ div { box-sizing: content-box; }
/* IE盒子模型 */ div { box-sizing: border-box; }
content-box就是標準盒模型,默認尺寸只包含盒子內容。而border-box則是IE盒模型,尺寸包含了盒子的內容和邊框。
如果我們在樣式中添加了內邊距和邊框,盒子尺寸計算方式的不同會對布局產生影響。例如:
/* 標準盒子模型 */ div { width: 100px; padding: 10px; border: 1px solid #000; } /* 盒子尺寸計算 */ width = 100px totalWidth = width + padding + border = 112px
/* IE盒子模型 */ div { width: 100px; padding: 10px; border: 1px solid #000; box-sizing: border-box; } /* 盒子尺寸計算 */ width = 100px - padding - border = 88px totalWidth = width + padding + border = 100px
由此可見,在特定情況下,我們可以使用box-sizing屬性來改變盒子模型的優先級,實現更完美的布局效果。