You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:CSS中margin-left与margin-right表现差异的原因

问题原因解析:margin-left与margin-right的表现差异

核心原因

  • 你的div设置了width: 100%,这个宽度是相对于父容器(body)的内容宽度计算的。
  • 当设置margin-left: 50px时,div的总占用宽度为100% + 50px,直接超过了body的内容宽度,浏览器会显示水平滚动条(溢出效果),同时左边的margin区域因为body的绿色背景暴露出来,所以能看到绿色区域。
  • 而设置margin-right: 50px时,浏览器会自动调整div的实际宽度为父容器内容宽度 - 50px,相当于直接覆盖了你设置的width: 100%。这时候div并没有超出body范围,右边的空间是div宽度收缩后让出来的,不是margin撑开的,所以既看不到绿色的margin区域,也不会产生溢出。

验证方法

如果把div的宽度改成固定值(比如width: 500px),再设置margin-right: 50px,就能看到右边的绿色margin区域了:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  background-color: greenyellow;
  border: 1px solid red; /* 加边框更直观看到body范围 */
}

.myDiv {
  width: 500px; /* 固定宽度 */
  height: 50px;
  background-color: rgb(112, 112, 0);
  margin-right: 50px; 
}

这时候div的总宽度是500px + 50px,不会被浏览器自动收缩,只要body宽度大于这个值,就能看到右边的绿色margin区域。

内容的提问来源于stack exchange,提问作者Nadirspam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:00:07