经典bug------margin塌陷和margin合并(解决方法BFC)

一:margin塌陷

设置margin-top没有用,只有比它的父级元素还大时,才移动并且一起移动,
父子嵌套的元素,垂直方向的margin会粘合在一起,取最大的那个值

解决方法:如何触发一个盒子的bfc,在父级盒子上用这些方法任意一个都行,根据实际情况选择使用
1.position:absolute;设置定位后自然就变成了bfc元素了
2.display:inline-block
3.float:left/right
4.overflow:hidden

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
   
    <div class="wrapper">
        <div class="content"></div>
    </div>
</body>
<style>
    * {
     
     
        margin: 0;
        padding: 0;
    }

    .wrapper {
     
     
        width: 100px;
        height: 100px;
        background-color: pink;
        margin-top: 100px;
        margin-left: 100px;
    }

    .content {
     
     
        width: 50px;
        height: 50px;
        background-color: gray;
        margin-left: 50px;
        margin-top: 150px;
    }
</style>

</html>

二:margin合并

平方向上的margin累加,而兄弟结构垂直方向上的margin是合并的

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <span class="span1">span1</span>
    <span class="span2">span2</span>
    <div class="demo1">demo1</div>
    <div class="demo2">demo2</div>
</body>
<style>
    * {
     
     
        margin: 0;
        padding: 0;
    }

    .span1 {
     
     
        background-color: pink;
        margin-right: 100px;
    }

    .span2 {
     
     
        background-color: gray;
        margin-left: 100px;
    }
    .demo1{
     
     
        background-color: #ffc;
        margin-bottom: 100px;
    }
    .demo2{
     
     
        background-color: #f80;
        margin-bottom: 100px;
    }
</style>

</html>

可以用bfc的方法解决,但是不建议,因为会改变结构

猜你喜欢

转载自blog.csdn.net/x1037490413/article/details/108474386