CSS浮动与清除浮动

一、CSS浮动

1、三个固定宽度与高度的框,当把框 1 向右浮动时,它脱离文档流并且向右移动,直到它的右边缘碰到包含框的右边缘。

2、文字围绕图片效果,当设置图片左浮动时,紧邻图片的行内元素将依次排开,与图片形成环绕效果。

3、浮动引发的问题

我们不定义框的宽度,然后再对1进行右浮动,我们看到内容多宽,容器就多宽,即:未定宽度的元素设定了浮动,元素的宽度会随内容变化,我们看到对1进行浮动之后,框2就受到影响,但框3并没有受到影响,设定了浮动的元素会对相邻元素即紧随其后的元素产生影响,使我们的布局变乱。

当父级元素包含的元素设置浮动时,我们发现父容器并没有把浮动的子元素包围起来,俗称塌陷。

二、如何清除浮动

     1、利用 clear属性,清除浮动

     2、使父容器形成BFC。

2.1 利用 clear属性,清除浮动

clear属性:clear 属性规定元素的哪一侧不允许其他浮动元素。

对紧邻浮动后的元素进行清除浮动,对其后元素设置clear属性

解决父级元素塌陷的问题:①添加空的div,设置clear属性

clear:left属性只是消除其左侧div浮动对它自己造成的影响,而不会改变左侧div甚至于父容器的表现,当子元素中有浮动和普通文档流元素,设置相应普通文档流元素clear属性就可以清除浮动;当子元素全是浮动元素时,我们在最后添加了一个非浮动的div,由于它有clear:left属性,所以它会按照左侧div不浮动来定位自己,也就是定位到下一行,而父容器看到有一个非浮动、普通流的子元素元素,会将其包围,这样造成了顺便也把三个浮动元素也包裹起来的效果,高度不再塌陷。

②clearfix技巧

“clearfix”技巧是基于在父元素上使用“:before”和“:after”两个伪类。使用这些伪类,我们可以在浮动元素的父容器前面和后面创建隐藏元素。“:before”伪类是用来防止子元素顶部的外边距塌陷,使用“display: table”创建一个匿名的“table-cell”元素。这也确保在IE6和IE7下具有一致性。“:after”伪类是用来防止子元素的底部的外边距塌陷,以及用来清除元素的浮动。

为容器设置了一个类名“group”。在需要清除浮动的容器上添加这个类名“group”。

2.2使父容器形成BFC

BFC有三个特性

BFC会阻止垂直外边距(margin-top、margin-bottom)叠加

BFC不会重叠浮动元素

BFC可以包含浮动

我们可以利用BFC的第三条特性来“清浮动”,这里其实说清浮动已经不再合适,应该说包含浮动。也就是说只要父容器形成BFC就可以,简单看看如何形成BFC

float为left|right

overflow为hidden|auto|scroll

display为table-cell|table-caption|inline-block

position为absolute|fixed

我们可以对父容器添加这些属性来形成BFC达到“清浮动”效果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 文章版权归饥人谷_Lyndon以及饥人谷所有。 1. 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分...
    HungerLyndon阅读 2,403评论 4 10
  • 一,浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型是一种可视化格式模型,浮动...
    DeeJay_Y阅读 901评论 0 4
  • 浮动,从诞生那天起,它就是个特别的属性——既为网页布局带来新的方法,却又随之产生一系列的问题。当然,随着时间的推移...
    郝特么冷阅读 858评论 0 6
  • 夜很深了,睡意挺浓的。 看书看久了,想想你就好了。 明天还要看书。 我也要睡了。 我挣到钱的那天,我回去找你。 但...
    xiao钱钱阅读 285评论 0 0