万物皆盒子
🧑‍🦱
Young David (少年大卫):
看这羊圈。
在 CSS 的世界里,所有的东西 —— 按钮、图片、文字...
它们本质上全都是方形的盒子(羊圈)!
🦊
Little Fox (小狐狸): 哪怕是圆形的头像?
🧑‍🦱
Young David (少年大卫): 是的。圆只是把方形的角磨圆了。本质还是方盒子。
盒子的解剖
Margin (外边距) - 盒子外的空地
Border (边框) - 墙壁
Padding (内边距) - 缓冲垫
Content (内容)
📦 核心宝物
巨人的算术题
👺
Goliath (巨人 Bug):
我要考考你这个小牧童!
如果一个盒子宽 100px,padding 20px,border 10px...
那么它的总宽度是 100px 吗?哈哈哈哈!
Wrong! Total Width = 100 + 20*2 + 10*2 = 160px
// 盒子太大了,挤破了地界!
🧑‍🦱
Young David (少年大卫):
数学不会骗人,但我们可以改变规则。
我们有布局的盾牌 (Border-Box)
BORDER-BOX!
* {
    box-sizing: border-box;
}
/* 现在,100px 就是 100px。
   墙壁和缓冲垫会往里面挤,
   而不会把盒子撑大。 */
⚔️ 操练场 (Training Ground)

任务: 计算盒子的总宽度。

问题:width: 200px; padding: 20px; border: 5px; (默认 box-sizing)。总宽度是多少?

总宽度 = px
🏗️ 建造工坊 (Workshop)

实战:排列勇士的按钮 (Button Spacing)

大卫的勇士们不能挤在一起,也不能离得太远。我们用 Margin 和 Padding 来排兵布阵!

STEP 1 盔甲内部的空间 (Padding)

文字需要呼吸空间。Padding 让文字不贴着边框。

.warrior-btn {
    /* 上下 10px,左右 20px */
    padding: 10px 20px;
    background: #e5e7eb;
    border: 2px solid #333;
}
STEP 2 勇士之间的距离 (Margin)

按钮之间需要间隔。Margin 推开周围的元素。

.warrior-btn {
    /* 彼此保持 10px 的距离 */
    margin-right: 10px;
}
STEP 3 统一的规则 (Border-Box)

为了防止按钮忽大忽小,加上“布局的盾牌”。

.warrior-btn {
    box-sizing: border-box;
    display: inline-block; /* 让它们排成一行 */
}
STEP 4 最终效果 (Result)