html/css-margin塌陷解决以及bfc触发

什么是margin塌陷:当两个盒子嵌套时,我们调整子盒子在父盒子中的位置,左右使用margin-left/margin-right 就可以变换左右位置,但是使用margin-top时,子盒子在父盒子中的相对位置并没有发生变化,并且当子盒子的值超过父盒子和网页顶端的距离时,子盒子会带着父盒子一起移动。
发生margin塌陷代码:
html:下面所有实例html代码相同,所以只在此处展示:
<!DOCTYPE html>
<html lang="em">
<head>
    <meta charset="UTF-8">
    <title>margin塌陷</title>
    <link rel="stylesheet" type="text/css" href="test.css" >
</head>
<body>
   <div class="wrapper">
        <div class="content"></div>
   </div>
</body>
</html>

css 代码:
*{
    padding:0px;
    margin:0px;
}
.wrapper{
    margin-left:100px;
    margin-top:100px;
    width:100px;
    height:100px;
    background-color:black;
}
.content{
    width:50px;
    height:50px;
    background-color:blueviolet;
    margin-left:50px;
    /*margin-top:150px; /*子盒子带动父盒子移动*/
    margin-top:50px;/*子盒子并没有发生移动*/
}
发生margin塌陷示意图:

margin塌陷

margin塌陷可以用bfc触发解决:只要父盒子有下面任意一项代码,都可以触发bfc并且解决margin塌陷;
  • position :absolute ; //进行定位(如果后面的元素只想按照顺序摆在它下面,那就不能用定位,一用下面的盒子就会上浮)
  • display : inline-block ; //设置行级块元素()
  • overflow : hidden; //隐藏子盒子溢出父盒子部分(如果本身内容就想溢出盒子,那就不能使用它触发)
  • float : left / right: //定义元素往哪个方向浮动
解决代码演示:只演示一种,其它几种方式代码一样;
*{
    padding:0px;
    margin:0px;
}
.wrapper{
    margin-left:100px;
    margin-top:100px;
    width:100px;
    height:100px;
    background-color:black;
    position:absolute;/*触发bfc*/
}
.content{
    width:50px;
    height:50px;
    background-color:blueviolet;
    margin-left:50px;
    /*margin-top:150px; /*子盒子带动父盒子移动*/
    margin-top:50px;/*子盒子并没有发生移动*/
}
样式展示:

margin塌陷解决图

注意:上面四个解决方法使用的先决条件是不影响别的需求,如果有影响,那就尝试去换别的条件去触发bfc;但是有时候会出现四种需求都出现的情况,所以说gfc只能缓解这个bug,并不能完全解决;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值