前言
在CSS 盒子模型的默认定义里,你对一个元素所设置的width
与height
只会应用到这个元素的内容区。如果这个元素有任何的border
或padding
,绘制到屏幕上时的盒子宽度和高度会加上设置的边框和内边距值。这意味着当你调整一个元素的宽度和高度时需要时刻注意到这个元素的边框和内边距。
语法:
box-sizing
属性被指定为下面列表中的关键字。
属性值
content-box
默认值,标准盒子模型。width
与height
只包括内容的宽和高, 不包括边框(border),内边距(padding),外边距(margin)。注意: 内边距、边框和外边距都在这个盒子的外部。比如说,.box {width: 350px; border: 10px solid black;}
在浏览器中的渲染的实际宽度将是 370px。
尺寸计算公式:
width
= 内容的宽度
height
= 内容的高度
宽度和高度的计算值都不包含内容的边框(border)和内边距(padding)。
border-box
width
和height
属性包括内容,内边距和边框,但不包括外边距。这是当文档处于 Quirks模式 时Internet Explorer使用的盒模型。注意,填充和边框将在盒子内 , 例如,.box {width: 350px; border: 10px solid black;}
导致在浏览器中呈现的宽度为350px的盒子。内容框不能为负,并且被分配到0,使得不可能使用border-box使元素消失。
尺寸计算公式:
width
= border + padding + 内容的宽度
height
= border + padding + 内容的高度
例子:
盒子的区别
(1)有两种盒子模型:IE盒模型(border-box)、W3C标准盒模型(content-box)
(2)盒模型:分为内容(content)、填充(padding)、边界(margin)、边框(border)四个部
(3)W3C标准盒模型:属性width,height只包含内容content,不包含border和padding
(4)IE盒模型:属性width,height包含content、border和padding,指的是content+padding+border。
在ie8+浏览器中使用哪个盒模型可以由box-sizing(CSS新增的属性)控制,默认值为content-box,即标准盒模型;
如果将box-sizing设为border-box则用的是IE盒模型。如果在ie6,7,8中DOCTYPE缺失会将盒子模型解释为IE
盒子模型。若在页面中声明了DOCTYPE类型,所有的浏览器都会把盒模型解释为W3C盒模型。
body标签也有margin
<body>
标签有必要强调一下。很多人以为<body>
标签占据的是整个页面的全部区域,其实是错误的,正确的理解是这样的:整个网页最大的盒子是<document>
,即浏览器。而<body>
是<document>
的儿子。浏览器给<body>
默认的margin大小是8个像素,此时<body>
占据了整个页面的一大部分区域,而不是全部区域。来看一段代码。
<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>Document</title><style type="text/css">div{width: 100px;height: 100px;border: 1px solid red;padding: 20px;margin: 30px;}</style></head><body><div>测试box-sizing</div><div>测试盒子</div></body></html>