CSS 盒子模型

CSS 盒子模型(Box Model)是 CSS 布局最核心的概念:浏览器会把页面中的每个元素都看作一个矩形的"盒子"。只有彻底搞懂盒子由哪几部分组成、宽度又是如何计算的,你才能真正掌控元素的大小、间距与页面排版,因此它是 CSS 学习路上绕不开的第一课。

什么是盒子模型

所有 HTML 元素都可以被看作盒子,从内到外由四部分组成:内容(content)、内边距(padding)、边框(border)和外边距(margin),就像快递包裹里的货物、泡沫、纸箱和外层空隙一样层层包裹。

div {
  width: 200px;                  /* 内容区的宽 */
  height: 100px;                 /* 内容区的高 */
  padding: 10px;                 /* 内边距:内容与边框之间 */
  border: 5px solid #333;        /* 边框:套在内边距外面 */
  margin: 20px;                  /* 外边距:盒子与盒子之间 */
}

各部分的作用

  • 内容区:真正显示文字、图片的区域,由 width 与 height 决定。
  • 内边距:撑开内容与边框的距离,背景色会覆盖该区域。
  • 边框:盒子的轮廓线,可设粗细、样式与颜色。
  • 外边距:拉开盒子与相邻元素的距离,是透明区域,不显示背景。
/* 背景只覆盖 内容+内边距 以内的区域 */
.box {
  width: 100px;
  padding: 10px;
  border: 5px solid black;
  margin: 10px;
  background: yellow;   /* 黄色背景延伸到边框内侧 */
}

总宽度到底怎么算

默认(content-box)下,width 只代表内容区宽度,盒子实际占用的总宽度还要加上左右内边距和左右边框,外边距则另外占位:

div {
  width: 300px;
  padding: 25px;            /* 左右内边距共 50px */
  border: 5px solid red;    /* 左右边框共 10px */
  margin: 10px;             /* 左右外边距共 20px */
}
/* 总宽度 = 300 + 50 + 10 + 20 = 380px */

用 box-sizing 简化计算

盒子的总宽公式记忆繁琐,实际项目里常用 box-sizing: border-box,让 width 直接包含内边距和边框,元素铺满布局时更不容易超出容器:

* {
  box-sizing: border-box;   /* width = 内容 + 内边距 + 边框 */
}
<!-- 设了 border-box 后,两个 50% 宽的盒子就能正好并排 -->
<div style="width:50%;float:left;box-sizing:border-box;border:1px solid gray">左</div>
<div style="width:50%;float:left;box-sizing:border-box;border:1px solid gray">右</div>

小结

盒子模型由内容、内边距、边框、外边距四层组成,默认宽度计算要"四层相加",推荐用 box-sizing:border-box 简化。下一节我们详细讲解边框 border 的各种写法。

笔记加载中…