CSS清除浮动

在线演示

浮动 Floats 是 CSS 中的一种布局方式。它的渲染位置在行框与包含块之间,这样就可以使行框内文字与浮动元素不重叠并且环绕它显示。在布局过程中也经常会使用它来达到左右并排布局的效果。但是,由于浮动特性,容器如果没有明确设定高度,会依照普通流内元素高度设置,这样就会导致脱离普通流的浮动元素溢出容器,影响其后元素布局。

  • 文字环绕效果
![](http://upload-images.jianshu.io/upload_images/257925-4baeefc8594ab07e?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
           <p>It's fun to float.It's fun to floatIt's fun to float</p>
p {margin:0; border:1px solid red;}
img {float:left; margin:0 4px 4px 0;}

文字环绕效果

  • 创建分栏

在上例基础上,只要给段落设定宽度,然后浮动它即可。

清除浮动

浮动框不属于文档中的普通流,当一个元素浮动之后,文档中的普通流就会表现得和浮动框不存在一样,当浮动框高度超出包含框的时候,也就会出现包含框不会自动伸高来闭合浮动元素(“高度塌陷”现象)。

浮动造成父容器塌陷

清除浮动的方法:
1.使用 clear 样式清楚

.clear-float { clear:both; }

clear 属性规定元素的哪一侧不允许其他浮动元素。这个规则只能影响使用清除的元素本身,不能影响其他元素。

clear 会为元素添加足够的空白空间,使到该元素的位置会放置在它前一个浮动元素之下,这跟增加元素外边距使到元素占据满行而强制换行的效果是一样的,事实上在 CSS1 和 CSS2 中,清除浮动正是通过自动为清除元素(即设置了 clear 属性的元素)增加外边距实现的,从 CSS 2.1 开始改为增加额外的空白空间,不改变外边距。

2.使用伪元素 :after 清除

.after-clear-float :after{content:””; display:block; clear:both;}

3.使用 overflow 清除

.overflow-clear-float {overflow:hidden;}
或者
.overflow-clear-float {overflow:auto;}

overflow 样式值为 非 visilbe 时,实际上是创建了 CSS 2.1 规范定义的 Block Formatting Contexts。创建了它的元素,会重新计算其内部元素位置,从而获得确切高度。这样父容器也就包含了浮动元素高度。

相对可用方法

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,825评论 1 92
  • 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动元素的特征: 不占据普通文档流的空...
    南山码农阅读 276评论 0 1
  • 在CSS布局中float属性经常会被用到,但使用float属性后会使其在普通流中脱离父容器,让人很苦恼。 浮动带来...
    wmsj100阅读 875评论 0 1
  • 前言 摘要: 浮动的元素可以向左或向右移动,直到它的外边缘碰到父容器或另一个浮动元素为止。由于浮动元素不在文档的普...
    zouyang0921阅读 397评论 0 2
  • 什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(flo...
    秦至阅读 436评论 1 8