CSS样式--外间距重叠

本文探讨了CSS中块级元素外边距重叠的问题,导致父元素位置移动。当第一个子元素的上外边距与父元素的上边重叠,最后一个子元素的下外边距与父元素的下边重叠时,会出现这种情况。文章列举并解释了五种解决方法,包括使用父元素的内边距、触发BFC、插入空table、模拟table和利用边框隔离。这些方法有助于避免外边距重叠带来的布局问题。
摘要由CSDN通过智能技术生成

        首先我们得知道外间距的重叠,是在块级元素中出现的。父元素的第一个子块级元素的上边,与最后一个子块级元素的下边,与父元素的上边和下边是重叠的。重叠导致了第一个子元素margin-top会移动父级元素的上边距离。最后一个子元素的margin-bottom会移动父元素的下边距离。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body{background-color: gray;}
    .d1{
      width: 200px;
      height: 400px;
      background-color: pink;
    }
    .d2{
      width: 150px;
      height: 100px;
      background-color: yellowgreen;
      /* 只给第一个子元素设置了上外间距50px */
      margin-top: 50px;
    }
    .d3{
      width: 150px;
      height: 100px;
      background-color: orange;
    }
    .d4{
      width: 150px;
      height: 100px;
      background-color: purple;
    }
  </style>
</head>
<body>
  <div class="d1">
    <div class="d2"></div>
    <div class="d3"></div>
    <div class="d4"></div>
  </div>
  <script></script>
</body>
</html>

        可以看到我们只是给第一个子元素设置了上外间距 结果导致父级跟着一起往下移动了          

 

 之所以会出现这种状态是因为重叠了 导致浏览器认为是同一条边线,所以就会这样了

解决方法(5种):

1.因为上边和第一个子元素上边重叠,既然外间距导致错误,用父元素的上内间距完成分开效果

2.父元素如果依靠触发BFC性能,就可以不受子元素的(重叠)影响

 父元素设置overflow(scroll、hidden、auto)

3.父元素的第一个子元素前增加一个空<table>标签,依靠table的特点让边不重叠(不推荐,影响布局效果)

4.在父元素的标签前部分模拟一个table出来。

父元素::before {

      content: "";

      display: table;

}

5.如果父元素有边框的阻隔,那么它和子元素的边就不会发生重叠

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值