前端三剑客之CSS---浮动的难点解析三(使用clear清除浮动和伪元素after清除浮动以及终极解决浮动的.clearfix类)

本文深入讲解了清除浮动的两种常用方法:使用clear属性和伪元素after。解释了clear属性的本质和如何选择清除方向,以及伪元素清除浮动的原理。同时介绍了clearfix类的使用,能够同时解决浮动和外边距重叠问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

清除浮动的两种基本通用方式

1. 使用clear清除浮动

作用:可以清除某个浮动元素对下面布局的影响!

可选值:

  • left 清除设置了float:left的元素对自己的影响。
  • right 清除设置了float:right的元素对自己的影响。
  • both 清除两侧浮动中对自己影响最大的那一侧浮动。

疑问?何为最大影响?
clear本质:

它的本质是给某个元素设置一个正的margin-top值。当一个元素上面有一个浮动元素时,浏览器会自动计算出该浮动元素的盒子占地大小(可见框+margin),然后给后面的那个被它盖住的元素设置该margin-top值,以此来清除浮动的影响!

何为最大影响?

当该元素上方既有左浮元素,又有右浮元素时,浏览器会计算出哪个盒子占地面积最大,然后就给下方元素设置该margin-top值!

结论:clear的本质就是设置margin-top值,以此来撑起父元素的高度!并且clear:both并不是字面上的清除两端浮动,而是取最大值进行清除!只有块级元素才可以使用clear属性,对于行内元素和行内块元素不起作用!

2. 使用伪元素after清除浮动

使用伪元素清除浮动原理:
其实就是在某个父元素后面动态生成一个块级盒子,然后给该盒子设置clear:both属性,本质上还是使用的clear:both来清除浮动。它的好处是:它避免了单独创造一个空的html盒子,而是直接用css的伪元素来创建一个盒子!

<div class="father">
<div class="son1"></div>
</div>
.father{
border:5px solid red;
}
.son1{
width:100px;
height:50px;
background-color:pink;
float:left;
}
.father::after{
content:'';
display:block;
clear:both;
}

采用clear:both来清除浮动或者使用伪元素清除浮动,副作用小,比元素开启BFC更加实用!

清除浮动的最终方式:clearfix类----用于解决父子之间浮动和外边距重叠问题

该样式既可以清除浮动,又可以解决外边距重叠问题!是一个终极解决浮动问题和外边距问题的类写法!!!
clearfix类的写法:

.clearfix::before,.clearfix::after{
content:'';
display:table;
clear:both;
}

原理:
首先content:'';和display:table这两个是用来解决外边距重叠问题,即将子父类外边距分开!注意:设置为display:block不行,不能分开子父外边距!!!
然后这三个属性加起来又可以解决浮动的问题,因此一举两得!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值