关于CSS外边距叠加问题

听闻HTML+CSS甚是简单,谁知这么多坑要爬;

1. 外边距叠加1

对于两个相邻元素的margin-bottom和margin-top会叠加,大家应该很熟悉(好像很多观众的样子,你这装逼犯,哈哈哈哈!);也就是说当一个元素出现在另一个元素上面时,第一个元素的底外边距与第二个元素的顶外边距发生叠加,他们之间的外边距为两个元素外边距中的较大者。

例如:div1的margin-bottom为10px;div2的margin-top为20px,那么他们之间的“距离”为20px;准确的说应该是这两个div形成的盒模型之间的距离为20px;这个很好理解;

2. 外边距叠加2(坑1)

 一定要大声念出这句话三遍、三遍、三遍:当一个元素包含在另一个元素中时(假设没有内边距或边框将外边距分隔开),他们的顶或底外边距也会发生叠加。(查看《精通CSS》P41)为了爬这个坑,我面壁思过几个小时,我容易吗我

例如:

<!DOCTYPE html>
<html>
  <head>
      <title>我的页面</title>
      <meta charset=utf-8>
  </head>调度后续事件

  <body>
    <p class="first" style="background: red; ">按照我们想当然的理解,first与second之间的间距应该只有1em(因为p元素之间的默认margin是1em)</p>
    <div class="second" style="height: 100px; background: pink; ">
      <p class= "second-1"style="margin-top: 50px; background: blue">
          按照我们想当然的理解,p元素应该位于second框往下50px处(margin-top的缘故),
          但是,因为second与p标签的margin-top发生叠加,导致p的margin-top叠加到second的margin-top上,所以first与second的距离为50px。
        </p>
    </div>
  </body>
</html>

如上图,first与second的距离为50px;这是因为second中的p元素的margin-top与second的margin-top发生叠加导致;这时我们只需要将second设置内边距或边框将外边距分隔开就可以了

<!DOCTYPE html>
<html>
  <head>
      <title>我的页面</title>
      <meta charset=utf-8>
  </head>调度后续事件

  <body>
    <p class="first" style="background: red; ">按照我们想当然的理解,first与second之间的间距应该只有1em(因为p元素之间的默认margin是1em)</p>
    <div class="second" style="height: 100px; background: pink; <span style="color:#ff0000;">padding: 1px;</span>">
      <p class= "second-1"style="margin-top: 50px; background: blue">
          按照我们想当然的理解,p元素应该位于second框往下50px处(margin-top的缘故),
          但是,因为second与p标签的margin-top发生叠加,导致p的margin-top叠加到second的margin-top上,所以first与second的距离为50px。
        </p>
    </div>
  </body>
</html>


如上一切正常。。

3. 外边距叠加3(坑2)

同样是《精通CSS》中的P41,这真是一本好书呀!

注意坑来了:外边距可以与本身发生叠加。假设有一个空元素,它有外边距,但是没有边框或内边距。在这种情况下,顶外边距与底外边距就会搞基,两个合二为一,叠加到一起,距离取其中较大的那个。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值