盒子模型 主要有两种,w3c标准盒模型,IE下的怪异盒模型,其实还有就是弹性盒模型(上篇文章咱们用他很好的解决了对齐问题)css
盒模型分为:标准w3c盒模型、IE盒模型、以及css中的伸缩盒模型html
当咱们使用编辑器建立一个html页面时,咱们必定会发现最顶上的DOCTYPE
标签css3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!DOCTYPE HTML>
这些doctype都是标准的文档类型,不管咱们使用哪一种模式都会触发标准模式,而若是doctype缺失,则在ie六、ie七、ie8将会触发怪异模式(quirks);浏览器
一旦为页面设置了恰当的DTD(文档定义类型)
,大多数浏览器都会按照标准盒模型来呈现内容,可是ie5和ie6的呈现倒是不正确的.编辑器
根据w3c规范,元素内容占据空间是由width
属性设置的,而内容周围的padding和border都是另外计算的。ui
不幸的是,IE5.X 和 6 在怪异模式中使用本身的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。.net
举个栗子code
咱们用一个div块来演示标准模式和怪异模式的区别:htm
.box{ width:200px; height:200px; border:20px solid black; padding:50px; margin:50px; }
在标准模式下的盒模型以下图所示,盒子总宽度/高度=width/height+padding+border+marginblog
在怪异模式下的盒模型以下图所示,盒子的总宽度和高度是包含内边距padding和边框border宽度在内的
盒子总宽度/高度=width/height + margin = 内容区宽度/高度 + padding + border + margin;
也便是说 width = 内容区宽度 + padding + border
语法:
box-sizing : content-box || border-box || inherit;
在css3中新增了box-sizing属性,具有了以上知识后,咱们已经理解:
参考