清除浮动的几种方式?各自的优缺点?

简介: 清除浮动的几种方式?各自的优缺点?

24、清除浮动的方法(最常用的4种)

为什么要清除浮动?

清除浮动主要是为了解决,父元素因为子级元素浮动引起的内部高度为0的问题

1.如下,我给父盒子设置一个boder,内部放两个盒子一个big 一个small,未给big和small设置浮动,则他们会默认撑开父盒子

2.当我给内部两个盒子加上float属性的时候


顶部深蓝色盒子就会顶上来,然后父盒子因为没设置高度,变成一条线,big和small已经浮动了


总结一下:


当父元素不给高度的时候,


内部元素不浮动时会撑开


而浮动的时候,父元素变成一条线


这时候很多人会想到新建标签clear:both和float 方法,但是这两种方法并不推荐使用!


什么是clear:both


clear:both:本质就是闭合浮动, 就是让父盒子闭合出口和入口,不让子盒子出来


清除浮动的方法(最常用的4种)

1.额外标签法(在最后一个浮动标签后,新加一个标签,给其设置clear:both;)(不推荐)


big

small

额外标签法

此时


如果我们清除了浮动,父元素自动检测子盒子最高的高度,然后与其同高。


优点:通俗易懂,方便


缺点:添加无意义标签,语义化差


不建议使用。


2.父级添加overflow属性(父元素添加overflow:hidden)(不推荐)

通过触发BFC方式,实现清除浮动
.fahter{
width: 400px;
border: 1px solid deeppink;
overflow: hidden;
}
优点:代码简洁
缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素
不推荐使用
{

什么是BFC


BFC:块级格式化上下文,它是指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。


在一个Web页面的CSS渲染中,块级格式化上下文 (Block Fromatting Context)是按照块级盒子布局的。W3C对BFC的定义如下:

浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。

为了便于理解,我们换一种方式来重新定义BFC。一个HTML元素要创建BFC,则满足下列的任意一个或多个条件即可:


1、float的值不是none。

2、position的值不是static或者relative。

3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex

4、overflow的值不是visible


BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。

怎么创建BFC

要显示的创建一个BFC是非常简单的,只要满足上述4个CSS条件之一就行。例如:

<div class="container">
  你的内容
</div>

在类container中添加类似 overflow: scroll,overflow: hidden,display: flex,float: left,或 display: table 的规则来显示创建BFC。虽然添加上述的任意一条都能创建BFC,但会有一些副作用:

1、display: table 可能引发响应性问题
2、overflow: scroll 可能产生多余的滚动条
3、float: left 将把元素移至左侧,并被其他元素环绕
4、overflow: hidden 将裁切溢出元素
}


3.使用after伪元素清除浮动(推荐使用)

.clearfix:after{/伪元素是行内元素 正常浏览器清除浮动方法/
content: “”;
display: block;
height: 0;
clear:both;
visibility: hidden;
}
.clearfix{
*zoom: 1;/*ie6清除浮动的方式 号只有IE6-IE7执行,其他浏览器不执行/
}
big
small
优点:符合闭合浮动思想,结构语义化正确
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.
推荐使用

4.使用before和after双伪元素清除浮动

.clearfix:after,.clearfix:before{
content: “”;
display: table;
}
.clearfix:after{
clear: both;
}
.clearfix{
*zoom: 1;
}
big
small
优点:代码更简洁
缺点:用zoom:1触发hasLayout.
相关文章
|
3月前
瀑布流的优点
瀑布流的优点
24 0
|
4月前
|
编解码 前端开发 UED
前端布局方式及其优缺点
前端布局方式及其优缺点
41 1
|
10月前
|
前端开发 容器
css的布局方式有哪些,有什么优缺点
css的布局方式有哪些,有什么优缺点
101 0
|
前端开发
清除浮动的几种方式?各自的优缺点?
清除浮动的几种方式?各自的优缺点?
47 0
|
前端开发
清除浮动的五种方法以及优缺点
清除浮动的五种方法以及优缺点
103 0
|
前端开发
前端清除浮动的几种方法?及优缺点?
前端清除浮动的几种方法?及优缺点?
83 0
|
10月前
|
前端开发 JavaScript UED
常用布局以及其优缺点
常用布局以及其优缺点
170 0
|
10月前
|
前端开发 UED 容器
css中的布局方式与各自优缺点
css中的布局方式与各自优缺点
56 0
|
10月前
|
前端开发
几种布局方式与各自优点
几种布局方式与各自优点
47 0