box-sizing属性决定width和height的计算方式:content-box(默认)仅内容区受设置影响,总尺寸会增加padding和border;border-box则使宽高包含内容、内边距和边框,设定值即总尺寸,利于精准布局。实际开发中推荐全局设置box-sizing: border-box以简化计算、避免溢出。

在CSS中,width 和 height 的实际表现会受到 box-sizing 属性的直接影响。理解它们如何结合使用,有助于更精确地控制元素的尺寸。
box-sizing: content-box(默认值)
这是浏览器的默认行为。当你设置 width 和 height 时,它们仅应用于元素的内容区域,不包括 padding 和 border。
例如:
.box {width: 200px;
padding: 20px;
border: 5px solid black;
box-sizing: content-box;
}
此时元素的总宽度为:
200px(内容) + 40px(左右padding) + 10px(左右border) = 250px
height 同理,总高度也会超出设定值。
立即学习“前端免费学习笔记(深入)”;
box-sizing: border-box
当设置为 border-box 时,width 和 height 包含了内容、padding 和 border。也就是说,你设定的 width 就是元素最终占据的总宽度。
同样的例子:
.box {width: 200px;
padding: 20px;
border: 5px solid black;
box-sizing: border-box;
}
这时内容区域会被压缩,自动调整为:
200px - 40px(padding) - 10px(border) = 150px
这样更容易进行布局计算,尤其在栅格系统或响应式设计中非常实用。
实际开发中的建议
为了减少样式计算的复杂性,很多开发者会在全局重置 box-sizing:
*, *::before, *::after {box-sizing: border-box;
}
这样所有元素都采用 border-box 模型,width 和 height 更直观可控,避免意外溢出或布局错位。
基本上就这些,关键在于明确你希望 width 和 height 是否包含边距和边框。选择合适的 box-sizing 能大幅提升布局效率。










