关于clear:both影响的margin麻烦老师解答,谢谢

来源:2-4 清除浮动

夜的解忧铺

2021-06-30 01:14:06

<style>

        *{

            padding0;

            margin0;

        } 



       p{  

           floatleft;

           width200px;

           height200px;

           margin-right20px;

           background-colororange;


       }

       .box{

           clearboth;

          margin-bottom20px;

           

       }



    </style>

</head>

<body>

    <div>

        <p></p>

        <p></p>

    </div>

    <div class="box">

        <p></p>

        <p></p>

    </div>

给.box 设置clear:both属性 怎么margin-top 和margin-bottom 有的可以生效 有的不生效呢?两个div之间没有高度,即便互相踹也没效果,但是margin-bottom margin-top  向下向上踹是有效果的 但是不生效

http://img.mukewang.com/climg/60db512e0990fb3718410916.jpg

给div设置clear:both属性 margin-top 的效果,向上踹的body,但是body标签的margin不是设置成0,为什么也能踹开呢 ?第二个踹的没高度的盒子 没踹开

http://img.mukewang.com/climg/60db52d309daee2915770579.jpg

margin-bottom的效果很奇怪

http://img.mukewang.com/climg/60db531b0959c2b914630563.jpg


<style>

        * {

            padding0;

            margin0;

        }

        p {

            floatleft;

            width200px;

            height200px;

            margin-right20px;

            background-colororange;

            

        }

        div{

            margin-bottom20px;

        }

        .cl{

            clearboth;

            background-colorred;

        }

        div{

            margin-top: 20px;

        } 

        /* .h20{

            height: 20px;

        }

        .h22{

            height: 22px;

        } */

    </style>

</head>


<body>

    <div class="box1">

        <p></p>

        <p></p>

    </div>

    <div class="cl"></div>

    <div class="box2">

        <p></p>

        <p></p>

    </div>

</body>

.cl没高度 为什么可以踹开呢

http://img.mukewang.com/climg/60db53c30924d60517480936.jpg

写回答

1回答

好帮手慕慕子

2021-06-30

同学你好,对于你的问题解答如下:

1、可以参考下图注释理解

http://img.mukewang.com/climg/60dbd2910959961111110369.jpg

2、可以理解为给div设置margin-top属性值是让div去踹body元素,与body是否设置了margin属性值无关,此时的div可以看做是一个空盒子(因为子元素浮动导致父元素div高度塌陷)所以是可以正常踹开的。

而box盒子设置margin-top没踹开是因为前面的元素浮动,脱离文档流,所以无法看到踹开的效果,可以换成一个正常元素,例如一个图片,那么此时box设置的margin-top就可以看到效果了,如下:

http://img.mukewang.com/climg/60dbd80c09f0877314160487.jpg

3、因为子元素p浮动后,div父元素没有高度,所以查看的margin-bottom效果如下:

http://img.mukewang.com/climg/60dbdbe109e6909705660268.jpg

4、.cl此时并没有高度,也没有踹开,为了方便同学更好的理解,老师将第一个div下的p元素设置为粉色背景了,如下:

http://img.mukewang.com/climg/60dbdca30936a0a305140269.jpg

此时给div设置的margin-bottom并没有踹开下面的和box盒子,粉色盒子和橙色盒子连在一起显示,如下:

http://img.mukewang.com/climg/60dbdcce099235c914680522.jpg

同学截图中查看的并不是踹开的距离,而是cl的高度为0 ,由于设置了上下margin属性值,在页面中实际占据的位置,如下:

http://img.mukewang.com/climg/60dbddc9096ff69219200937.jpg

祝学习愉快~

1

0 学习 · 15276 问题

查看课程