margin 的问题

1.margin的折叠问题:

 在CSS中,两个或多个毗邻的普通流中的盒子(可能是父子元素,也可能是兄弟元素)在垂直方向上的外边距会发生叠加,这种形成的外边距称之为外边距叠加。

这种折叠现象只会在常规文档流中出现,而绝对定位、浮动、inline-block等元素不会出现折叠现象。

只有垂直方向的外边距会发生外边距叠加。水平方向的外边距不存在叠加的情况。

计算方法:

两个相邻Box的margin外边距都是正数时,折叠外边距是两者中较大的值
两个相邻Box的margin外边距都是负数时,折叠外边距是两者中绝对值较大的值
两个相邻Box的margin外边距一正一负数时,折叠外边距是两者相加的和
2.margin的上下传递问题:

margin-top的传递:
如果块级元素的顶部线和父元素的顶部线重叠,那么这个块级元素的margin-top值会传递给父元素
2.margin-bottom的传递问题:
如果块级元素的底部线和父元素的底部线重叠,那么这个块级元素的margin-top值会传递给父元素
3.解决方法:
给父元素设置padding-top或padding-bottom,防止顶部线或底部线重叠即可;
给父元素设置border,可以解决边距传递的问题;
触发BFC(Block Format Context,块级格式化上下文),简单理解就是给父元素设置一个结界,防止上下边距传递出去(最优解决方案)。触发BFC有以下方式:
添加浮动float(float的值不能是none);
设置一个非visible的overflow属性(除了visible,其他属性值都可以,像hidden、auto、scroll等);
设置定位position(position的值不能是static或relative);
设置display的值为inline-block、table-cell、flex、table-caption或inline-flex;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值