CSS清除浮动的八种方法

我们为什么需要清除浮动,如果我们不清除浮动会发生什么呢?
基础样式,没清除浮动之前代码:
可复制也可以自己手动布局,后可尝试使用下面介绍的方法练习清除浮动

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>不清除浮动会发生什么title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .father {
            width: 400px;
            background-color: red;
        }
        .son {
            width: 150px;
            height: 150px;
            float: left;
            background-color: pink;
        }
        .box {
            width: 200px;
            height: 200px;
            background-color: orange;
        }
    style>
head>

<body>
    <div class="father">
        <div class="son">我是浮动后的子元素1div>
        <div class="son">我是浮动后的子元素1div>
    div>
    <div class="box">我是下一个兄弟元素boxdiv>
body>

html>

未清除浮动之前的效果图:
CSS清除浮动的八种方法_第1张图片

如图所示:不清除浮动会影响布局,因为我们没有给父级高度,跟父级同级的元素会受到影响,因为给子元素添加浮动,浮动之后,子元素会脱离文档流,父级的下一个兄弟元素就会顶上去,浮动可以设置文字围绕

清除浮动后的效果:
CSS清除浮动的八种方法_第2张图片
让我为大家介绍八种清除浮动的方法吧!本人文笔有限,如有不对的地方可以向我提出,感谢大家!

一、给父级div定义伪类(推荐使用)

这个是清除浮动常用的方法
复制可用

.clearfix::after {
  display: block;
  content: "";
  height: 0;
  overflow: hidden;
  clear: both;
}
.clearfix {
  zoom: 1;
} 

切记给浮动的父元素添加
CSS清除浮动的八种方法_第3张图片

二、clear:both

在浮动尾部添加空div标签,添加上样式clear:both;

.son1 {
	clear:both;
}

CSS清除浮动的八种方法_第4张图片

三、overflow:hidden

给父级div定义overflow:hidden

overflow:hidden;

CSS清除浮动的八种方法_第5张图片

四、给父级固定的高度height

注意:不适合用在不确定高度的元素上,比如某宝,一直向下滑,会一直刷新出新的商品
CSS清除浮动的八种方法_第6张图片

五、父级随子级一起浮动

CSS清除浮动的八种方法_第7张图片
这种方法还是会影响接下来的布局,不过可以解决父级的问题
CSS清除浮动的八种方法_第8张图片

六、overflow:auto

给浮动元素父级添加overflow:auto;
CSS清除浮动的八种方法_第9张图片

七、display:table

给浮动元素的父级div定义为表格display:table
CSS清除浮动的八种方法_第10张图片

八、br标签

br中有clear属性,添加all可以清除浮动
CSS清除浮动的八种方法_第11张图片

清除浮动代码大总结,复制可玩:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>清除浮动的八种方法title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        /* 第一种,给父级div定义伪类,父级没设置高度时 */
        /* 记得给浮动元素的父级添加clearfix类名 */
        /* .clearfix::after {
            display: block;
            content: "";
            height: 0;
            overflow: hidden;
            clear: both;
        }
        .clearfix {
            zoom: 1;
        } */
        .father {
            /* 第三种方法给浮动元素父级添加overflow:hidden */
            /* overflow: hidden; */
            /* 第四种方法给父级添加高度 */
            /* height: 150px; */
            /* 第五种方法父级随子级一起浮动 */
            /* float: left; */
            /* 第六种方法给父级添加overflow:auto */
            /* overflow: auto; */
            /* 第七种方法给父级添加display:table */
            /* display: table; */
            width: 400px;
            background-color: red;
        }
        .son {
            width: 150px;
            height: 150px;
            float: left;
            background-color: pink;
        }
        .box {
            width: 200px;
            height: 200px;
            background-color: orange;
        }
        /* 第二种方法 */
        /* .son1 {
            clear: both;
        } */
    style>
head>

<body>
    
    <div class="father"> 
        <div class="son">我是浮动后的子元素1div>
        <div class="son">我是浮动后的子元素2div>
        
        
        
        
    div>
    <div class="box">我是下一个兄弟元素boxdiv>
body>

html>

感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!

你可能感兴趣的:(css,前端)