清除浮动

在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动

例子

.news {background-color: gray;border: solid 1px black;}.news img {float: left;}.news p {float: right;}<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
</div>

清除浮动方法

方法一:使用带clear属性的空元素

在浮动元素后使用一个空元素如<div class="clear"></div>,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用<br class="clear" />或<hr class="clear" />来进行清理。

.news {background-color: gray;border: solid 1px black;}.news img {float: left;}.news p {float: right;}.clear {clear: both;}<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
<div class="clear"></div>
</div>

优点:简单,代码少,浏览器兼容性好。

缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。

方法二:使用CSS的overflow属性

给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。
在添加overflow属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。

.news {background-color: gray;border: solid 1px black;overflow: hidden;*zoom: 1;}.news img {float: left;}.news p {float: right;}<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
</div>

方法三:给浮动的元素的容器添加浮动

给浮动元素的容器也添加上浮动属性即可清除内部浮动,但是这样会使其整体浮动,影响布局,不推荐使用。

方法四:使用邻接元素处理

什么都不做,给浮动元素后面的元素添加clear属性。

.news {background-color: gray;border: solid 1px black;}.news img {float: left;}.news p {float: right;}.content{clear:both;}<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
<div class="content"></div>
</div>

方法五:使用CSS的:after伪元素

结合 :after 伪元素(注意这不是伪类,而是伪元素,代表一个元素之后最近的元素)和 IEhack ,可以完美兼容当前主流的各大浏览器,这里的 IEhack 指的是触发 hasLayout。

给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。

.news {background-color: gray;border: solid 1px black;}.news img {float: left;}.news p {float: right;}.clearfix:after{content: "020"; display: block; height: 0; clear: both; visibility: hidden;  }.clearfix {/* 触发 hasLayout */ zoom: 1; }<div class="news clearfix">
<img src="news-pic.jpg" />
<p>some text</p>
</div>

通过CSS伪元素在容器的内部元素最后添加了一个看不见的空格"020"或点".",并且赋予clear属性来清除浮动。需要注意的是为了IE6和IE7浏览器,要给clearfix这个class添加一条zoom:1;触发haslayout。

清除浮动的方法可以分成两类

一是利用 clear 属性,包括在浮动元素末尾添加一个带有 clear: both 属性的空 div 来闭合元素,其实利用 :after 伪元素的方法也是在元素末尾添加一个内容为一个点并带有 clear: both 属性的元素实现的。

二是触发浮动元素父元素的 BFC (Block Formatting Contexts, 块级格式化上下文),使到该父元素可以包含浮动元素,关于这一点。

推荐使用

/* 清除浮动影响 */
.clearfix::after {content: "";height: 0;clear: both;display: block;visibility: hidden;
}.clearfix {*zoom: 1;
}

常用的清除浮动的方法相关推荐

  1. 现在比较流行的一种新的清除浮动的方法

    清除浮动的方法一般有很多种,我们都是根据实际情况或者自己的习惯来清除浮动,最近发现一种比较常用的清除浮动的方法: .cf:before, .cf:after {content: " &quo ...

  2. “约见”面试官系列之常见面试题之第五十五篇之清除浮动的方法(建议收藏)

    清除浮动的几种方法 标准流:盒子会各占整行位置.子盒子若是标准流,父盒子虽然没有高度,但是会撑开父盒子高度. 浮动:盒子浮了起来,不会占据原来的位置,若父盒子没有定义高度,则不会撑开父盒子,父盒 子高 ...

  3. div为空的时候 浮动没有效果_3种CSS清除浮动的方法

    点击上方 "前端技术精选" 关注,星标或者置顶 12点00分准时推送,第一时间送达 作者:html中文网 | 编辑:前端妹 来源:html.cn/web/css/19613.htm ...

  4. CSS清除浮动的方法

    我们先看看浮动导致什么样的效果. 正常没有浮动的案例如下: <!DOCTYPE html> <html><head><meta charset="u ...

  5. css为什么要用浮动_3种CSS清除浮动的方法

    点击上方 "前端技术精选" 关注,星标或者置顶 12点00分准时推送,第一时间送达 作者:html中文网 | 编辑:前端妹 来源:html.cn/web/css/19613.htm ...

  6. php里清除浮动代码,CSS中使用clearfix清除浮动的方法

    首先在很多很多年以前我们常用的清除浮动是这样的. CSS Code复制内容到剪贴板 .clear{clear:both;line-height:0;} 现在可能还可以在很多老的站点上可以看到这样的代码 ...

  7. 触发bfc的html元素,什么是BFC? CSS 使用伪元素清除浮动的方法

    BFC概念: 块级格式化上下文,是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响. 我们先了解一个名词:BFC(block formatting co ...

  8. 清除浮动的方法总结CSS实现水平垂直居中方法总结

    1.清除浮动的方法总结 当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至 ...

  9. 详细解读css中的浮动以及清除浮动的方法

    对于前端初学者来说,css浮动部分的知识是一块比较难以理解的部分,下面我将把我学习过程中的心得分享给大家. 导读:   1.css块级元素讲解 2.css中浮动是如何产生的 3.出现浮动后,如何清除浮 ...

最新文章

  1. python 代理使用方法简介
  2. List与Map的遍历过程中删除元素
  3. C#中容器控件GroupBox、Panel、TabControl
  4. 浏览器渲染原理与过程
  5. 谁控制了我们的浏览器?
  6. llustrator 教程,如何在 Illustrator 中对齐内容?
  7. golang map转json的顺序问题
  8. 74系列芯片引脚图资料大全
  9. 单元三:阻抗匹配(电容电感,变压器,传输线变压器,附带硬件电路)
  10. 4k电视测试软件准确吗,如何检测自家的电视是真4K还是假4K?当贝市场告诉你
  11. Unity3D 保姆级安装教程与收费方案和版本、下载地址,看不会算我输
  12. Steam游戏上线初期的总结与思考
  13. 2022拼多多详情/拼多多商品详情/拼多多sku详情
  14. 网络质量监控 - 守好入口第一关
  15. Windows无法完成格式化U盘终结解决方法
  16. 用python画皇冠_【推荐】手把手教你如何用Python画一棵漂亮樱花树含源码
  17. Email和电子邮箱一样吗?
  18. 2020年8月编程语言排行榜出炉:C语言位居第一,Java、Python位居二三
  19. Centos系统服务器挂载硬盘(ntfs格式和exfat格式)
  20. 今天,你“刷脸开门”了吗?

热门文章

  1. 【每日新闻】2017年亚马逊研发投入排世界第一,超过华为、BAT 总和 | 数人云宣布与UMCloud合并...
  2. Tuxera NTFS for Mac:验证密钥时出错及彻底删除Tuxera ntfs
  3. ajax瀑布流加载重叠,使用瀑布流插件masonry,图片未加载完就会出现重叠现象,怎么解决?...
  4. 一个老站长说:我是如何通过网络赚来几百万?
  5. Android官方文档翻译 十三 3.1Supporting Different Languages
  6. 磁盘大于16TB如何做ext4的文件系统
  7. Post和Get,Post和Put请求的区别
  8. pandas玩转excel-> (1)如何利用pandas创建excel数据文件
  9. 单片机STC89C52RC实现矩阵键盘(汇编语言版)
  10. 有什么编辑图片加文字的软件?今日推荐:图片编辑软件加文字