下面给你一篇 《CSS 基础:margin 属性 4 种值类型 & 4 个写法规则详解》,
从 0 讲起 + 配图式理解 + 面试不丢分,小白也能一次看懂。
一、margin 是什么?
margin = 外边距
👉 控制 元素与元素之间的距离
┌───────────────┐
│ margin │ ← 外边距
│ ┌───────────┐ │
│ │ border │ │
│ │ ┌───────┐ │ │
│ │ │padding│ │ │
│ │ │ content│ │ │
│ │ └───────┘ │ │
│ └───────────┘ │
└───────────────┘
二、margin 支持的 4 种值类型(重点)
1️⃣ 长度值(最常用)
margin: 10px;
margin: 1em;
margin: 2rem;
常见单位
| 单位 | 说明 |
|---|---|
px | 固定像素(最常用) |
em | 相对父元素字体大小 |
rem | 相对根元素字体大小 |
% | 相对父元素宽度 |
📌 注意:
上下 margin 的 % 也是相对宽度,不是高度(面试点)
2️⃣ 百分比值 %
margin: 10%;
📌 计算规则:
相对于父元素的宽度
.parent {
width: 200px;
}
.child {
margin: 10%; /* = 20px */
}
3️⃣ auto(自动)
margin: auto;
最经典用法:水平居中
.box {
width: 200px;
margin: 0 auto;
}
📌 条件:
- 必须是 块级元素
- 必须有 宽度
4️⃣ 负值(负边距)
margin-left: -20px;
📌 作用:
- 元素向反方向移动
- 会 压住 / 覆盖 其他元素
.box {
margin-top: -10px;
}
⚠ 常用于:
- 特殊布局
- 微调间距
(新手慎用)
三、margin 的 4 种写法规则(重点 ⭐)
1️⃣ 一个值(4 个方向一样)
margin: 20px;
等价于:
margin-top: 20px;
margin-right: 20px;
margin-bottom: 20px;
margin-left: 20px;
📌 口诀:
👉 上下左右都一样
2️⃣ 两个值(上下 / 左右)
margin: 10px 20px;
等价于:
margin-top: 10px;
margin-bottom: 10px;
margin-left: 20px;
margin-right: 20px;
📌 口诀:
👉 上下 | 左右
3️⃣ 三个值(上 / 左右 / 下)
margin: 10px 20px 30px;
等价于:
margin-top: 10px;
margin-left: 20px;
margin-right: 20px;
margin-bottom: 30px;
📌 口诀:
👉 上 | 左右 | 下
4️⃣ 四个值(顺时针)
margin: 10px 20px 30px 40px;
等价于:
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
📌 口诀(必背):
上 → 右 → 下 → 左(顺时针)
四、单方向写法(补充)
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
📌 优点:
- 可读性强
- 方便单独修改
五、margin 常见“坑点”(面试高频)
1️⃣ 外边距塌陷(margin collapse)
<div class="box1"></div>
<div class="box2"></div>
.box1 { margin-bottom: 20px; }
.box2 { margin-top: 30px; }
👉 实际间距是 30px,不是 50px ❗
解决方式
overflow: hidden;
display: flex;
padding-top: 1px;
2️⃣ margin 不会撑开父元素
.parent {
border: 1px solid red;
}
.child {
margin-top: 20px;
}
👉 父元素不会被撑高
(padding 会)
3️⃣ margin: auto 不能垂直居中
❌
margin: auto;
只能 水平居中
垂直居中要用:
- flex
- grid
- position
六、记忆口诀(送你一套)
写法规则口诀
1 值:全一样
2 值:上下 左右
3 值:上 左右 下
4 值:上右下左
百分比规则
margin 百分比,全看父宽度
七、面试一句话总结
margin 用于控制元素外边距,支持长度、百分比、auto 和负值;简写规则遵循顺时针,上右下左;百分比始终基于父元素宽度。