父元素跟随子元素margin-top移动

本文介绍了HTML布局中遇到的一个常见问题:当子元素设置margin时,导致父元素位置跟随移动。问题源于外边距塌陷现象。文章详细分析了原因,并提供了四种解决方案,包括添加padding或border、将父元素转换为BFC元素等。重点讨论了使用overflow:hidden和设置绝对定位来避免外边距塌陷的方法。
摘要由CSDN通过智能技术生成

问题描述

在未给父元素设置固定高度时,会出现跟随子元素的margin-top一起移动的现象

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <style>
    .father{
        width:100%;
        height:100%;
        background-color: red;
    }
    .child{
        width: 300px;
        height:200px;
        background-color: skyblue;
        margin:150px auto;
    }
    </style>
    <body>
        <div class="father">
            <div class="child">
                
            </div>
            
        </div>
    </body>
</html>

 当我给子元素加了一个margin:150px auto 的时候就会出现父元素和子元素一起下移的现象


 

原因分析:

外边距塌陷问题

当子元素寻找不到父元素的border或者padding时 就会出现子元素和父元素外边距合并的问题


解决方案:

1.通过添加padding和border来解决

2,将父元素转换为BFC元素,这样子盒子就不会影响到父盒子    

        (1)通过overflow:hidden 来将父元素转换为bfc元素

        (2)设置position:absolute

        (3)通过浮动来触发,这样会出现父元素没有高度的情况。

        (4)设置为行内块元素,这样父元素的宽度就会失效

综上,采用overflow:hidden或者设置绝对定位来解决问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值