CSS参考手册
基本用户界面 | Basic User Interface
边框大小 | box-sizing
box-sizing
属性用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型。可以使用此属性来模拟不正确支持CSS盒子模型规范的浏览器的行为。
/* Keyword values */
box-sizing: content-box;
box-sizing: border-box;
/* Global values */
box-sizing: inherit;
box-sizing: initial;
box-sizing: unset;
在CSS中,你设置一个元素的width
与height
只会应用到这个元素的内容区。如果这个元素有任何的 border
或 padding
,绘制到屏幕上时的盒子宽度和高度会加上设置的边框和内边距值。这意味着当你调整一个元素的宽度和高度时需要时刻注意到这个元素的边框和内边距。当我们实现响应式布局时,这个特点尤其烦人。
box-sizing
属性可以被用来调整这些表现:
-
content-box
是默认值。如果你设置一个元素的宽为100px,那么这个元素的内容区会有100px宽,并且任何边框和内边距的宽度都会被增加到最后绘制出来的元素宽度中。
-
border-box
告诉浏览器去理解你设置的边框和内边距的值是包含在width内的。也就是说,如果你将一个元素的width设为100px,那么这100px会包含其它的border和padding,内容区的实际宽度会是width减去border + padding的计算值。大多数情况下这使得我们更容易的去设定一个元素的宽高。
一些专家甚至建议所有的Web开发者们将所有的元素的box-sizing都设为border-box。
上面的例子显示了三种情况。在每种情况下,都有一个包含子DIV的父DIV(带有橙色边框)。子DIV已经定了width: 100%
,并且有一个淡蓝色的背景。
- 第一个场景使用默认值
box-sizing: content-box
。子DIV没有填充物,没有边界,整齐地贴在父DIV上。
- 第二个场景使用默认
box-sizing: content-box
. 子DIV增加了填充和边框。然后,子节点溢出到父服务器之外,因为它的宽度仅使用内容计算:然后添加填充和边框,以获得呈现的宽度。
- 第三种场景使用
box-sizing: border-box
现在,子div可以很好地嵌入到它的父母中,因为它的width: 100%
说明了填充和边框。
初始值 |
content-box |
---|---|
适用元素 |
all elements that accept width or height |
是否是继承属性 |
no |
适用媒体 |
visual |
计算值 |
as specified |
Animation type |
discrete |
正规顺序 |
the unique non-ambiguous order defined by the formal grammar |
语法
该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 + 内容的 width,height = border + padding + 内容的 height。
正式语法
content-box | border-box
示例
HTML
<div class="content-box">Content box</div>
<br>
<div class="border-box">Border box</div>
CSS
div {
width: 160px;
height: 80px;
padding: 20px;
border: 8px solid red;
background: yellow;
}
.content-box {
box-sizing: content-box;
}
.border-box {
box-sizing: border-box;
}
结果
规范
Specification |
Status |
Comment |
---|---|---|
CSS Basic User Interface Module Level 3The definition of 'box-sizing' in that specification. |
Candidate Recommendation |
Initial definition. |
浏览器兼容性
Feature |
Chrome |
Edge |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support |
1.0 -webkit1 10.0 |
(Yes)-webkit (Yes) |
1.0 (1.7 or earlier)-moz1 29.0 (29.0)2 |
8.01 |
7.0 |
3.0 (522)-webkit 5.13 |
padding-box |
No support |
No support |
1.0 (1.7 or earlier)-moz1 29.0 (29.0) Removed in 50.0 (50.0) |
No support |
No support |
No support |
Feature |
Android |
Edge |
Firefox Mobile (Gecko) |
IE Phone |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
Basic support |
2.1-webkit1 4.0 |
(Yes)-webkit (Yes) |
1.0 (1.0)-moz1 29.0 (29.0)2 |
9.0 |
(Yes) |
(Yes) |
padding-box |
No support |
No support |
1.0 (1.0)-moz1 29.0 (29.0) Removed in 50.0 (50.0) |
No support |
No support |
No support |
基本用户界面 | Basic User Interface相关

层叠样式表( Cascading Style Sheets )是一种用来表现 HTML 或 XML 等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。