CSS box-sizing 属性详解(css中boxshadow)

box-sizing 是 CSS 的一个非常重要的属性。

CSS 的 box-sizing 属性用于控制元素尺寸的计算方式,决定了元素的宽度( width )和高度( height )是否包含内边距( padding )和边框( border )。这是 CSS 盒子模型的核心概念之一。

两种主要的值:

1. content-box (默认值)

  • 宽度和高度仅包含内容区域
  • 添加 padding border 增加元素的总尺寸
  • 计算公式:

总宽度 = width + padding-left + padding-right + border-left + border-right

总高度 = height + padding-top + padding-bottom + border-top + border-bottom

示例:

.box {

width: 200px;

padding: 20px;

border: 5px solid black;

box-sizing: content-box; /* 默认值 */

}

  • 实际总宽度 = 200px (内容宽) + 20px×2 (内边距) + 5px×2 (边框) = 250px

2. border-box (推荐值)

  • 宽度和高度包含内容、内边距和边框
  • 添加 padding border 挤压内容区域,但元素总尺寸不变。
  • 计算公式:

内容宽度 = width - padding-left - padding-right - border-left - border-right

内容高度 = height - padding-top - padding-bottom - border-top - border-bottom

示例:

.box {

width: 200px;

padding: 20px;

border: 5px solid black;

box-sizing: border-box; /* 推荐值 */

}

  • 实际总宽度 = 200px(直接包含内容、内边距和边框)。
  • 内容区域宽度 = 200px - 20px×2 - 5px×2 = 150px

为什么推荐使用 border-box?

  • 直观布局:设置 width: 100% 时,元素不会因添加 padding/border 而意外超出父容器。
  • 简化计算:无需手动调整宽度来抵消 padding border 的影响。
  • 响应式友好:更易控制元素在容器中的精确占比。

实际应用建议:

全局设置为 border-box (常见最佳实践):

* {

box-sizing: border-box; /* 所有元素继承此计算方式 */

}

示意图:

┌────────────────────┐

│ margin │

│ ┌─────────────────┐ │

│ │ border │ │

│ │ ┌──────────────┐ │ │

│ │ │ padding │ │ │

│ │ │ ┌───────────┐ │ │ │

│ │ │ │ content │ │ │ │

│ │ │ └───────────┘ │ │ │

│ │ └─────────────┘ │ │

│ └─────────────────┘ │

└────────────────────┘

  • content-box :仅蓝色区域(content)计入 width/height
  • border-box :蓝色 + 绿色 + 橙色区域( content + padding + border )计入 width/height

注意 box-sizing 不影响外边距( margin ),它始终在总尺寸之外。

爱学习的小伙伴更多精彩关注不迷路哟~

原文链接:,转发请注明来源!