资讯专栏INFORMATION COLUMN

清除浮动的原理详解

henry14 / 3012人阅读

摘要:清除浮动原因前端布局用的最多的是脱离文档流,浮动起来。浮动的框可以左右移动,直到遇到另一个浮动框或者遇到外边缘的包含框。当包含框的高度小于浮动框的时候,此时就会出现高度塌陷。即为何我们需要清楚浮动。

清除浮动原因

前端布局用的最多的是float:脱离文档流,浮动起来。浮动的框可以左右移动,直到遇到另一个浮动框或者遇到外边缘的包含框(BCF)。正是因为当元素浮动之后,不会影响块级元素的布局,只会影响内联元素布局,会造成父级元素高度坍塌。此时文档流中的普通流就会表现得该浮动框不存在一样的布局模式。当包含框的高度小于浮动框的时候,此时就会出现高度塌陷。即为何我们需要清楚浮动。

清除浮动的原理 1、父级div定义伪类:after和zoom
 
Left
Right
div2

原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题

优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)

缺点:代码多,不少初学者不理解原理,要两句代码结合使用,才能让主流浏览器都支持

建议:推荐使用,建议定义公共类,以减少CSS代码

评分:★★★★☆

2.在结尾处添加空div标签clear:both
  
Left
Right
div2

原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度

优点:简单,代码少,浏览器支持好,不容易出现怪问题

缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不爽

建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法

评分:★★★☆☆

3.父级div定义height
 
Left
Right
div2

原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题

优点:简单,代码少,容易掌握

缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题

建议:不推荐使用,只建议高度固定的布局时使用

评分:★★☆☆☆

4.父级div定义overflow:hidden
 
Left
Right
div2

复制代码
原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

优点:简单,代码少,浏览器支持好

缺点:不能和position配合使用,因为超出的尺寸的会被隐藏

建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用

评分:★★★☆☆

5.父级div定义overflow:auto
 
Left
Right
div2

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会自动检查浮动区域的高度

优点:简单,代码少,浏览器支持好

缺点:内部宽高超过父级div时,会出现滚动条。

建议:不推荐使用,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧。

评分:★★☆☆☆

6.父级div也一起浮动
 
Left
Right
div2

原理:所有代码一起浮动,就变成了一个整体

优点:没有优点

缺点:会产生新的浮动问题。

建议:不推荐使用,只作了解。

评分:★☆☆☆☆

7.父级div定义display:table
 
Left
Right
div2

原理:将div属性变成表格

优点:没有优点

缺点:会产生新的未知问题

建议:不推荐使用,只作了解

评分:★☆☆☆☆

8、结尾处加br标签clear:both
 
Left
Right

div2

原理:父级div定义zoom:1来解决IE浮动问题,结尾处加br标签clear:both

建议:不推荐使用,只作了解

评分:★☆☆☆☆

原文地址:(转载请注明)

    https://juejin.im/post/5abe2adb6fb9a028de44d11d


参考:
原文连接:几种常用的清除浮动方法

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93913.html

相关文章

  • 浮动(Floats)原理清除浮动

    摘要:父元素的顶端会限制浮动元素防止一直浮动到页面顶端。例子戳这里清除浮动清除浮动的目的是为了解决高度塌陷的问题撑开浮动父元素。原理会在元素的之上增加一个清除区域这个区域会在元素的上增加额外间隔并且不允许浮动元素进入这个区域。 浮动概念 浮动元素会脱离文档的普通流,根据float的值向左或向右移动,直到它的外边界碰到父元素的内边界或另一个浮动元素的外边界为止。由于浮动框不在文档的普通流中,所...

    andong777 评论0 收藏0
  • 理解CSS浮动与清理

    摘要:浮动为什么会有文本环绕效果产生这个疑问主要来自于以往的印象浮动的元素是脱离文档流的。也就是说,浮动元素的确脱离了文档流,因此文档流中的块框会无视浮动的元素,但是文本不会。 作为前端写了很多页面布局,但是浮动这块一直是我似懂非懂的盲点,一方面用浮动能实现很多布局,另一方面浮动造成的影响又会破坏布局让人头疼,所以今天就特地写篇博文解决这块盲点。 本文主要讨论以下几个问题:1.浮动的原始用途...

    Tonny 评论0 收藏0
  • 理解CSS浮动与清理

    摘要:浮动为什么会有文本环绕效果产生这个疑问主要来自于以往的印象浮动的元素是脱离文档流的。也就是说,浮动元素的确脱离了文档流,因此文档流中的块框会无视浮动的元素,但是文本不会。 作为前端写了很多页面布局,但是浮动这块一直是我似懂非懂的盲点,一方面用浮动能实现很多布局,另一方面浮动造成的影响又会破坏布局让人头疼,所以今天就特地写篇博文解决这块盲点。 本文主要讨论以下几个问题:1.浮动的原始用途...

    cyqian 评论0 收藏0
  • BFC原理详解

    摘要:最常见的有简称和简称。可以把它理解成是一个独立的容器,并且这个容器的里的布局,与这个容器外的毫不相干。根据布局规则第二条垂直方向的距离由决定。参考前端精选文摘神奇背后的原理之详解深入理解流体特性和特性下多栏自适应布局布局 一.BFC是什么 在解释 BFC 是什么之前,需要先介绍 Box、Formatting Context的概念。 1.BOX:CSS布局的基本单位 Box是CSS布局的...

    ziwenxie 评论0 收藏0

发表评论

0条评论

henry14

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<