美文网首页IT修真院-前端
什么是浮动?有哪些清除浮动的方法?

什么是浮动?有哪些清除浮动的方法?

作者: 自娱自楽 | 来源:发表于2017-09-11 22:15 被阅读50次

浮动float出现的本意是用来实现文字像流水一样环绕浮动元素的效果。因为除了这个效果以外,float属性的其他应用都可以用其他css属性来实现。

由于CSS是一门相当灵活的语言。某个CSS属性被用于的场景,可能会完全违背当初创造该CSS属性的本意。就如今天我们要讲的float,因为可以很简单的实现多列布局而常被当作布局属性使用。


浮动的特性:

包裹性:浮动属性可以使block元素产生类似inline-block的状态使其产生包裹内容的效果。

破坏性(欺骗性):对行内盒inline-boxs设置浮动会破坏其所在行盒line-box的结构。

这个很好理解,因为浮动元素脱离了文档流,其父元素失去了内容,所以失去了高度。但浮动对其父元素line-box结构的影响不止于此。

可以理解为当元素浮动后,就如物体浮出湖面一样,不占距湖底空间,但是在湖底有个投影。而周围的内联元素就像胆小的鱼儿一样被影子欺骗,认为它就在哪里,所以不敢进去,只是围在一边。

浮动元素在脱离文档流的同时还会影响页面中的行内元素

浮动在文档流中的影响:

假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。

demo

如果把上面这段定义中的浮动元素换为inline-block元素,他同样成立,所以说在某些方面float元素和inline-block元素是相同的。

同为在一行排列,浮动元素就像时打了强化剂的inline-block,使他能设置排列的方向,但同时会有副作用,如上面讲到的破坏性。

我们一方面要使用他的布局能力,另一方面又不希望他副作用破坏布局,所以在使用float的时候,我们还会想办法清除浮动。


有哪些清除浮动的方法?

1、使用clear 

clear : none | left | right | both

2、增加一个清除浮动的子元素

3、用:after伪元素

4、父元素设置 overflow:hidden

5、父元素也设成float

6、父元素设置display:table。

第一种方法只适合相邻浮动元素清除浮动,后面三种是触发了BFC,推荐使用第三种方法。

什么是BFC

BFC就是“块级格式化上下文”的意思,创建了 BFC的元素就是一个独立的盒子,不过只有Block-level box可以参与创建BFC, 它规定了内部的Block-level Box如何布局,并且与这个独立盒子里的布局不受外部影响,当然它也不会影响到外面的元素。

何为格式化上下文,个人理解就是将BFC容器进行格式化,使其不受上下元素的影响。

格式化具体指的是什么格式,可以参考html基本流,因为html本身就是一个BFC容器,大致特性如下:

内部的Box会在垂直方向,从顶部开始一个接一个地放置。

Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生叠加

每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

BFC的区域不会与float box叠加。

BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。 计算BFC的高度时,浮动元素也参与计算。


参考文献:

CSS float浮动的深入研究、详解及拓展

CSS浮动(float,clear)通俗讲解

CSS浮动float详解

相关文章

  • css清除浮动的三种方法

    摘要:css清除浮动float的三种方法总结,为什么要清除浮动?浮动会有哪些影响? 一.先看现象(display:...

  • 什么是浮动?有哪些清除浮动的方法?

    我们在日常开发布局中经常会使用到流体布局,流体布局用到的一个最重要的属性就是浮动,今天就来看看浮动的相关知识。 1...

  • 什么是浮动?有哪些清除浮动的方法?

    浮动float出现的本意是用来实现文字像流水一样环绕浮动元素的效果。因为除了这个效果以外,float属性的其他应用...

  • 什么是浮动?有哪些清除浮动的方法?

    大家好,我是IT修真院的学员,一位正直纯洁善良的web前端程序员 今天给大家分享一下什么是浮动?有哪些清除浮动的方...

  • 清除浮动

    什么是浮动浮动问题的原因清除浮动的方法 一、什么是浮动 我们对元素进行了浮动(float),我们的元素就会脱离文档...

  • 布局浮动的问题

    浮动的问题 什么是浮动?浮动(float)的副作用清除浮动两种清除浮动的办法如下:

  • 谈谈几种"清除浮动"的方法

    在谈清除浮动之前,我们首先有几个疑问: 什么是浮动? 浮动有啥用? 我们为什么要清除它? 首先,看看浮动的定义...

  • 关于清除浮动的方法

    刚学习了浮动,这里整理一下清除浮动的方法。 一、伪元素 伪元素清除浮动是伪元素的用途之一,这是清除浮动的一个相对比...

  • (17.03.27)清除浮动

    清除浮动的方法: clear:both/left/right;清除浮动;两边/左边/右边

  • css问题收集 2018-07-19

    一、 父元素高度无法撑开 原因:1.子元素浮动 解决:清除浮动 清除浮动方法: .clearfix:after{c...

网友评论

    本文标题:什么是浮动?有哪些清除浮动的方法?

    本文链接:https://www.haomeiwen.com/subject/oknxjxtx.html