CSS 解决外边距塌陷


常见解决方案

  • 设置父盒子边框
  • 设置父盒子内边距
  • 设置父盒子的overflow
  • 设置父盒子或内部盒子的浮动属性

什么是外边距塌陷?

有两个嵌套关系的 <div>,想让内部的 <div> 距离外部<div> 顶部100px,这个时候时候, 如果直接给内部 <div>margin-top:100px; 就会出现下图情况, 内部 <div>并没有单独下移,而是父 <div> 跟着一起下来了, 这个现象就是外边距塌陷。

请添加图片描述

通过设置父盒子边框解决

在给内部 <div> 设置 margin-top 的基础上, 还要给父 <div> 设置一个透明边框。效果如下图, 但是仔细看会发现, 虽然父 <div> 的边框是透明的, 但是仍然会占有 1px; 实际使用时, 要注意调整。

请添加图片描述

通过设置父盒子内边距解决

不设置内部 <div>margin-top, 而是给父 <div> 设置 padding-top: 100px; 通过内边距的方式实现效果。但是要注意的是, 默认情况下给父 <div> 设置内边距, 会导致盒子撑大, 所以要设置 box-sizing: border-box; 使父盒子大小不变。

请添加图片描述

通过设置父盒子的 overflow 解决

在给内部 <div> 设置 margin-top 的基础上, 还要给父 <div>, 设置一个 overflow: hidden 属性, 也能实现效果。

请添加图片描述

通过设置父盒子或内部盒子的浮动属性解决

给内部 <div> 设置 margin-top 的基础上, 给内部 <div> 或者父 <div> 设置 float: left; 浮动属性, 也可以实现效果

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值