首页 / CSS 入门教程 / 盒模型高级

CSS 入门教程

盒模型高级

本教程共 44 篇 · 第 14 篇 · 更新于 2026-07-29 · 约 10 分钟阅读

box-sizingbox-shadow盒模型阴影border-box

14. 盒模型高级

本节目标:掌握 box-sizing 的两种模式,学会使用 box-shadow 创建阴影。

box-sizing:改变盒模型计算方式

在第 9 章我们学过,默认情况下 width 只控制内容区域。padding 和 border 会往外撑。

.box {
  width: 200px;
  padding: 20px;
  border: 2px solid #333;
}

这个盒子实际占用宽度是 244px,不是 200px。这在布局时很烦人。

box-sizing 就是来解决这个问题的。

content-box(默认值)

box-sizing: content-box;

这是默认行为。width 和 height 只包含内容区域,padding 和 border 额外计算。

border-box(推荐)

box-sizing: border-box;

width 和 height 包含内容、padding 和 border。设置 width: 200px,整个盒子就是 200px。

.box {
  width: 200px;
  padding: 20px;
  border: 2px solid #333;
  box-sizing: border-box;
}

这个盒子实际宽度就是 200px。内容区域会被压缩到 156px(200 - 40 - 4)。

全局设置 border-box

很多开发者会在全局设置 border-box,让所有元素统一计算方式:

* {
  box-sizing: border-box;
}

这样布局更直观,推荐使用。

box-shadow:盒子阴影

box-shadow 可以给元素添加阴影效果,让元素有”浮起来”的感觉。

基本语法

box-shadow: 水平偏移 垂直偏移 模糊半径 颜色;
.card {
  box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
}
  • 水平偏移:正值向右,负值向左
  • 垂直偏移:正值向下,负值向上
  • 模糊半径:值越大越模糊,0 表示锐利
  • 颜色:阴影颜色,推荐用 rgba 半透明

各参数详解

/* 只写两个值:水平和垂直偏移,颜色默认黑色 */
box-shadow: 5px 5px;

/* 三个值:加上模糊半径 */
box-shadow: 5px 5px 10px;

/* 四个值:加上颜色 */
box-shadow: 5px 5px 10px grey;

常用阴影效果

/* 轻微阴影,适合卡片 */
.light {
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* 中等阴影,适合悬浮效果 */
.medium {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

/* 强烈阴影,适合弹窗 */
.heavy {
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
}

用 rgba 做阴影

阴影颜色推荐用 rgba,设置透明度让阴影更自然。纯黑色阴影会显得很生硬。

扩展半径

box-shadow 还有第四个长度值,控制阴影的扩展大小:

box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.1);
/* 水平 垂直 模糊 扩展 颜色 */

扩展半径会让阴影变大,正值扩大,负值缩小。

内阴影 inset

默认阴影在元素外面。加一个 inset 关键字,阴影会画在元素内部:

.inset {
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}

内阴影常用于输入框,营造”凹陷”效果。

多重阴影

box-shadow 可以叠加多个阴影,用逗号分隔:

.card {
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.1),
    0 8px 16px rgba(0, 0, 0, 0.08);
}

多重阴影可以做出更立体的效果。

box-shadow 不占空间

和 outline 一样,box-shadow 不占据布局空间,不会影响其他元素的位置。