在 CSS 中,margin(外边距)和 padding(内边距)都是用于控制元素间距的属性,但它们的作用对象和效果有本质区别,具体对比如下:

核心区别

特性 margin(外边距) padding(内边距)
作用区域 元素外部,控制元素与其他元素的距离 元素内部,控制内容与元素边框(或边缘)的距离
背景影响 不影响元素背景(背景不会延伸到外边距) 会影响元素背景(背景会填充内边距区域)
计算方式 属于元素外部空间,不占用元素自身尺寸 属于元素内部空间,会增加元素的总尺寸(除非设置 box-sizing: border-box
取值特性 可以为负数(实现元素重叠等效果) 不能为负数

视觉效果对比

假设一个带背景色的元素:

<!-- margin 示例:外部间距 -->
<view style="margin: 20rpx; background: #f0f0f0;">
  内容
</view>
<!-- 元素外部会有 20rpx 空白,背景色不会覆盖这个区域 -->

<!-- padding 示例:内部间距 -->
<view style="padding: 20rpx; background: #f0f0f0;">
  内容
</view>
<!-- 元素内部内容与边缘有 20rpx 空白,背景色会覆盖这个区域 -->

适用场景

margin 适用场景 padding 适用场景
控制元素与其他元素的间距(如上下元素的间隔) 控制元素内容与边框的距离(如按钮文字与边缘的距离)
使元素在父容器中居中(如 margin: 0 auto 扩展元素的点击区域(增加内边距可增大可点击范围)
实现元素的偏移或重叠(利用负 margin) 调整文本、图片等内容在元素内的布局

总结

  • margin 管外部:让元素“离邻居远一点”,不影响自身大小和背景。
  • padding 管内部:让元素“内容离边缘远一点”,会扩大元素尺寸(除非特殊设置)并被背景覆盖。

实际开发中,两者经常配合使用,例如:用 margin 控制卡片之间的距离,用 padding 控制卡片内部内容的布局。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐