html中css清除浮动的四种方法

清除浮动的原因就是让两个及两个以上的元素显示在同一排;

 <style>
        *{
     
     
            margin:0;
            padding:0;
        }
        .outBox{
     
     
            border:2px solid pink;
            font-size:20px;
            color:#fff;
            font-weight: bold;

        }
        .left{
     
     
            width:200px;
            height: 200px;
            background:skyblue;
            text-align: center;
            line-height:200px;
            
        }
        .right{
     
     
            width: 100px;
            height: 100px;
            background:slateblue;
            text-align: center;
            line-height:100px;

        }
   </style>
  <div class="outBox">
        <div class="left"></div>
        <div class="right"></div>
    </div>
    <div class="other"></div>

未设置浮动的样式如下(未给父元素设置高度,父元素的高度是由子元素的高度撑开的):
在这里插入图片描述
给left盒子设置了左浮动后显示效果如下图(设置的浮动元素即脱离了文档流,父元素的高度现在由right盒子决定,犹豫left盒子脱离了文档流所以right盒子就跑到了最左边被left盒子盖住了):
在这里插入图片描述
为了方便观察,现在将right盒子的宽高各修改为300px,如下图:
在这里插入图片描述

给left,right均添加左浮动后的效果图(父元素的高度没了,只剩下了最初设置了boder):
在这里插入图片描述
正式步入正轨Duang Duang Duang…

清除浮动的方法如下:

1.给父元素添加overflow:hidden;
此种方法只适用于内容元素的高度不会超过父元素的高度(即内容高度固定的)

 <style>
  .outBox{
     
     
            border:2px solid pink;
            font-size:20px;
            color:#fff;
            font-weight: bold;
            overflow: hidden;
        }
  </style>

效果图如下:
在这里插入图片描述

缺点:给父元素设置了overflow:hidden后,当元素的内容超过父元素的高度的时候,元素就会被截掉(效果图如下)
在这里插入图片描述
2.给父元素添加高度
由于父元素的高度是由内容盒子撑开的高度,设置的父元素最小高度是300px,父元素的最小高度必须>=300px,如不大于就会产生入下效果图
在这里插入图片描述
父元素的最小高度必须>=300px,如大于或等于会产生入下效果图(正常效果图)
在这里插入图片描述
缺点:此种方法的必须知道内容元素的高度,不灵活,一般元素高度都不会写死

3.给添加浮动元素的div,在其最后添加兄弟元素,并给新增加的兄弟元素添加类名clear,给该类名添加样式 .clear{ clear:both; }
结构如下:

<div class="outBox">
        <div class="left"></div>
        <div class="right"></div>
        <div class="clear"></div>
 </div>

缺点:此种方法虽然简单,但是添加了无意义的标签,不过比前面两种方法好太多;

4.给父元素添加类名clearfix,并给其类名添加伪类::after;
优点:浏览器支持好、不容易导致布局出现异常问题,写法固定;(推荐使用此种方法,简单便捷,只需添加一个class即可解决问题)缺点:css代码多、不少初学者不理解原理,要两句代码结合使用才能让主流浏览器都支持。

<style>
	.clearfix::after{
     
     
            content: "";
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }
        .clearfix{
     
     
            zoom:1;   //兼容ie浏览器低版本清除浮动不生效
        }
</style>
 <div class="outBox clearfix">
        <div class="left"></div>
        <div class="right"></div>
 </div>

猜你喜欢

转载自blog.csdn.net/qq_45695853/article/details/115206933