解决margin-top或者margin-bottom无效的问题

问题: 给一个div添加margin-top发现效果作用在了父元素上,就是说,看起来是父元素加了margin
html:

<body>
  <div class="partner">
    <div class="child"></div>
  </div>
</body>

style:

body{
      background:#dddddd;
      margin:0;
      padding: 0;
    }
    .partner{
      width:200px;
      height:200px;
      background:pink
    }
    .child{
      width:100px;
      height:100px;
      background:burlywood;
    }

此时没加margin,效果图如下:

未加margin

此时div紧靠在左上角。

.child添加margin-top:30px之后,我们设想的是子元素与父元素之间会有30px的间距,查看下方效果图发现,明显与我们设想不一致

添加margin-top

此时发现,父元素上方出现30px的距离。
原因:
所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、 Padding或Border分隔。 CSS2.1规定浮动元素和绝对定位元素不参与Margin折叠
如何解决?
既然已经知道是margin发生了重叠,并且知道了浮动元素和绝对定位元素不会出现margin折叠,那就让他们变成浮动或者定位元素就好了呀
所以,我们可以用padding代替margin,或者给父元素加border让两个元素分隔开,再或者你可以试试floatoverflowposition

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,879评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,843评论 1 92
  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,650评论 0 6
  • 本课来自http://www.imooc.com/learn/9请不要用作商业用途。 HTML5 HTML介绍 H...
    PYLON阅读 3,340评论 0 5
  • 下雪天对于孩子来说可是一件特别高兴的事,又可尽情地玩雪了。刚吃完饭就想出去玩一会儿,我说早晨外面有点冷,稍微暖...
    侯耀斐妈妈阅读 324评论 0 3