深入理解 box-sizing:内容宽度 vs 实际宽度

82 阅读1分钟

在 Web 开发中,理解元素的尺寸计算逻辑是布局设计的关键。CSS 的 box-sizing 属性通过决定 widthheight 的定义方式,直接影响了元素的表现形式。在默认的 content-box 模式下,widthheight 表示内容区域的尺寸,paddingborder 会额外增加元素的实际宽高。而在 border-box 模式下,widthheight 包含内容、paddingborder 的总尺寸,使得布局更加直观和可控。选择合适的 box-sizing 模式,不仅可以简化布局计算,还能提升页面的响应式兼容性。

1. box-sizing 的可选值

1.1 属性值

属性值含义
content-box默认值widthheight 只包括内容区域,不包含 paddingborder
border-boxwidthheight 包括内容、paddingborder 的总宽度和高度。
inherit继承父元素的 box-sizing 属性值。

1.2. 对比总结

模式width 表示的含义实际测量出的总宽度内容宽度计算
content-boxwidth 是内容的宽度width + padding + borderwidth 相同
border-boxwidth 是总宽度(包括 padding 和 border)width 相同width - padding - border

2. content-box 中的 width

content-box 模式下:

  • width 属性仅表示内容区域的宽度,不包括 paddingborder
  • 实际测量出的元素的总宽度会大于 width,因为还要加上 paddingborder 的宽度。

3. border-box 中的 width

border-box 模式下:

  • width 属性表示元素的总宽度,包括内容、paddingborder
  • 内容区域的宽度会根据设置的 paddingborder 缩小,以保证总宽度固定为 width