box-sizing 属性允许我们在元素的总宽度和高度中包括内边距(填充)和边框。
假如不指定 CSS box-sizing 属性
默认情况下,元素的宽度和高度是这样计算的:
- width + padding + border = 元素的实际宽度
- height + padding + border = 元素的实际高度
这意味着:当设置元素的宽度/高度时,该元素通常看起来比设置的更大(因为元素的边框和内边距已被添加到元素的指定宽度/高度中)。
.div1 {
width: 300px;
height: 100px;
border: 1px solid blue;
}
.div2 {
width: 300px;
height: 100px;
padding: 50px;
border: 1px solid red;
}

box-sizing 属性解决了这个问题。
如果使用 CSS box-sizing 属性
box-sizing 属性允许我们在元素的总宽度和高度中包括内边距和边框。
如果在元素上设置了 box-sizing: border-box;,则宽度和高度会包括内边距和边框:
.div1 {
width: 300px;
height: 100px;
border: 1px solid blue;
box-sizing: border-box;
}
.div2 {
width: 300px;
height: 100px;
padding: 50px;
border: 1px solid red;
box-sizing: border-box;
}

两个 <div> 元素都设置了 box-sizing: border-box;
由于使用 box-sizing: border-box; 的效果如此之好,许多开发人员希望页面上的所有元素都能够以这种方式工作。
下面的代码能够确保以这种更直观的方式调整所有元素的大小。许多浏览器已经在对许多表单元素使用 box-sizing: border-box;(但并非全部 - 这就是为什么 input 和 textarea 在 width: 100%; 时看起来不同)。
将其应用于所有元素是安全且明智的:
* {
box-sizing: border-box;
}
CSS的box-sizing属性改变了元素尺寸计算方式,使得宽度和高度包含内边距和边框。默认情况下,元素的实际尺寸是width+padding+border。使用box-sizing:border-box;,元素的尺寸就包括了内边距和边框,从而实现更直观的布局。通过将此属性应用于所有元素,可以确保一致的尺寸行为,避免元素尺寸超出预期。
790





