外边距合并

本文详细解析了CSS中外边距合并的三种常见场景:父子元素、相邻元素及元素自身之间的合并现象,并提供了三种有效防止外边距合并的方法,包括添加边框、内边距和利用BFC。

一:外边距合并的场景

从3个简单的小例子来看外边距合并:

1、父子合并

给h1加50px的margin,但实际上h1和div的margin合并在一起了
clipboard.png

2、相邻元素合并

detail设置margin为30px,header设置margin为30px,结果两个相邻元素之间的间距发生了合并
clipboard.png

而且合并宽度是margin数值大的为准。如下图detail和header外边距合并之后,边距为50px。
clipboard.png

3、自己和自己合并

当元素内容为空时,元素设置的上下margin会自己和自己合并。如下面这个例子中,footer为空,设置了上下margin为30px,但实际上footer的间隔只是30px,自己的上下margin合并了。
clipboard.png

二、阻止外边距合并的方法

1、给父元素加border

如下图给header加上border之后,h1和header就没有产生外边距合并了。

clipboard.png

2、给父元素加上padding

clipboard.png

注意:相邻元素合并加padding和border都没有用

3、形成一个BFC

给header加了一个overflow:hidden,形成一个BFC,外边距就不再合并。
但是副作用时overflow:hidden是有作用,如果有二级菜单就会被隐藏。
clipboard.png
当然其他形成BFC的方法也可以生效,但也有对应的副作用。
如用float:left,宽度会收缩。需要设置宽度为100%

clipboard.png

demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值