首页 > 试题广场 >

浮动清除

可以理解有两个思路,四个方法
第一种思路:给浮动元素后面的元素设置清除浮动
第二种思路:BFC,给父容器添加overflow:hidden属性,让父元素变为一个独立容器

第一种思路有三种方法


  1. 在浮动元素后手写一个带有clear属性的空元素。对应标准答案方法一,兼容性好,但是会产生大量没有语义的元素,不易维护
  2. 给浮动元素后面的元素添加一个clear属性。其实和我说的上一种方法基本一样,就是不用新加一个元素罢了,不过前提是浮动元素后面得有一个元素,对应标准答案方法四
  3. 为父元素添加C3的::after伪元素属性。伪元素是在其内容元素中添加一个虚假元素,after伪元素是添加给父元素的属性,效果是为这个父元素添加一个虚假的子元素,放在这个父元素的所有子元素的最后面,然后为这个伪元素添加clear属性,对应标准答案方法五



第二种思路只有一种方法

为父元素添加 overflow:hidden 属性,这样会让浮动元素再次回到容器层,从而把容器的高度撑起来,对应标准答案方法二。

这里就涉及到了 BFC,可以搜索一下关键字,有一个问答里我详细讲了 BFC。BFC 的一个主要作用就是在其内部形成一个独立空间,让浮动元素再次回到容器层,起到清除浮动的效果。


伪元素:在内容元素的前后添加一个元素。如:给父元添加before属性(具体写法可以参考标准答案给的链接),就会在这个父元素内部子元素的最前面添加一个伪元素,变成这个父元素的第一个子元素,这个伪元素可以在外部被看到,可以为其像真元素那样设置样式,添加内容,但是源码中却找不到,这就是伪元素


个人其实不是太认同方法三,给容器元素添加浮动,那这个容器元素又处于浮动状态,仍然会脱离文档产生浮动溢出,所以毫无意义。这个方法其实也是想到 BFC 的作用,但是利用 BFC 清除浮动时,应该给给父元素赋予像 overflow:hidden 这样不会产生负面效果的特征属性,而不是接着又抛出一个问题。

编辑于 2022-03-10 09:43:30 回复(0)
<p>1、拖家带口:后面添加空元素</p><p>2、同流合污:父元素浮动</p><p>3、不做人了:父元素变成bfc</p><p>4、背个背包::after里clear</p><p>5、狐朋狗友:浮动元素后面的元素clear</p>
发表于 2020-11-24 12:53:12 回复(1)
<p>1:添加新的元素,应用clear:both</p><p>2:父级div定义,overflow:hidden。通过触发BFC方式,实现清除浮动</p><p>3:使用after伪元素清除浮动</p><p>4:使用before和after双伪元素清除浮动</p>
发表于 2020-05-25 22:51:24 回复(0)