说到清除浮动的方法,我想网络上应该有不下7,8的方法,介绍这些方法之前,想下为什么清除浮动?

再次回到float这个属性,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列。

这就产生了一个问题:浮动元素所在父元素不会自动伸长以便闭合浮动元素,任其“红杏出墙”,这显然不符合我们的“伦理观”,所以要“抓回来”施以家法;那么如何抓呢?

提起css,提起(x)html,首先进入脑海的是楚楚动人的页面吗?不,首先应该是这楚楚动人的页面的背后的“楚楚冻人”吧,那些可恨的梦魇般的浏览器兼容!!!

浏览器中可以自动完成闭合浮动元素的情况:

标准浏览器中可以自动完成闭合浮动元素的方法,在标准浏览器中,这称之为Block-Formatting-Contexts(块格式化上下文):

a.浮动元素;

b.拥有绝对定位属性的元素;

c.设置inline-block元素;

d.table-cell元素;

e.设置了overflow的元素,比如:auto/hidden。

【注】CSS3中,将Block-formatting-contexts 叫做 flow root。

对于触发方式也做了修改:The value of ‘position’ is neither ‘static’ nor ‘relative’;

那么在IE/win中,就依靠那个“hasLayout”了,触发“layOut”的方法有:

a.浮动元素

b.绝对定位元素

c.display:inline-block

d.zoom:比如常见的设置zoom:1;

e.width/height,比如设置height:1%的方法;

f.overflow/overflow-x/overflow-y [IE7 新增];

g.max/min-width/height [IE7 新增];
      
        以上种种方法,要么IEonly,要么cross的情况不理想,于是就产生了适用性方法的需求,尽管有时你可能需要些许hack;

(1)空标签法:

       这种方法应该说是最简单的一种了,W3C建议在容器的末尾增加一个“clear:both"的元素,

  强迫容器适应它的高度以便装下所有的float,并没限制使用什么样的标签,有用

<br style="clear:both" />

的,有用空

  1. <div style="clear:both"></div>

的;比如:

    <div>
<div style ="float:left; width:40%;" >
<p> Some content </ p >
</div>
<p> Text outside the float </p>
<div style ="clear:both;" ></div>
</div>

     (2)父元素使用overflow的方法:
       通过设置父元素overflow值设置为hidden或者auto;不过,在<=IE6中使用这个方法,还需要haslayout,

  还有,使用overflow=hidden的时候,一旦你有定位需求可能会因此而难以实现,使用这种方法前你应该至少确定:

a.父元素的height是自适应的;

b.浮动元素的宽度不大于父元素的宽度,即没有溢出需求;所以,这种方法也有它的局限性;

<div style ="overflow:hidden; width:100%;">
<div style ="float:left;width:30%;">
<p>the widths of the combined floats never exceed the width of the container</p>
</div>
</div>

(3)伪类:after

       这种方法应该说是目前应用最广泛的方法,它的优势:没有多余的标记添加到容器中;通过使用:after产生的content不能接受某些属性,包括'position','float',列表属性,表格属性,但是clear属性可以被接受。

不过,不幸的是,IE不支持:after方法,但又幸运的是,回顾前面,如果IE在父容器拥有Width/Height等layout状态下,会完成自动闭合,称之为“auto-clearing”;那么,对于IE/win,我们使用设定zoom:1的方法的方法来实现和:after一样的效果.于是

一个类似这样的样式出现了:

    .clearfix:after{content:".";display:block;height:;clear:both;visibility:hidden;}
.clearfix{zoom:;}
<div class="clearfix"><div style ="float:left;width:30%;" ><p>take :after</p></div>

css清除浮动各方法与原理的更多相关文章

  1. CSS清除浮动的方法

    CSS清除浮动的方法有哪些呢?经常性地会使用到float,很多邪门的事儿都有可能是浮动在作怪,清除浮动是必须要做的,而且随时性地对父级元素清除浮动的做法也被认为是书写CSS的良好习惯之一.下面看今天的 ...

  2. 前端开发CSS清除浮动的方法有哪些?

    在前端开发过程中,非IE浏览器下,当容器的高度自动,并且容器内容中有浮动元素(float为left或right),此时如果容器的高度不能自适应内容的高度,从而使得内容溢出破坏整体布局,这种现象叫做浮动 ...

  3. CSS清除浮动float方法总结

    使用浮动造成的BUG: 使用浮动前:(子节点是将父节点撑开了) 代码如下 <div class="box"> <div class="d1"& ...

  4. 8种CSS清除浮动的方法优缺点分析

    为什么清除CSS浮动这么难? 因为浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的代码,在各种浏览器中显示效果也有可能不相同,这样让 ...

  5. CSS清除浮动的方法及优缺点

    浮动是CSS布局里面用的比较多的属性.浮动的框向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 因为浮动会使当前元素产生向上浮的效果,所以浮动的元素会脱离正常的文档流,它包围的内容在 ...

  6. css清除浮动的方法总结

    在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了,下面总结8种清除浮动的方法,测试已通过 ie chrome firefox opera,需要的朋友可以参考下     清除浮动是每一个 we ...

  7. css清除浮动的方法汇总

    这是在其他地方看到的一篇文章,汇总的不错,摘过来做个记录. 引用地址 : http://www.cnblogs.com/ForEvErNoME/p/3383539.html ------------- ...

  8. CSS清除浮动各种方法

    当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象.这个现 ...

  9. css清除浮动float方法

    转载:http://www.cnblogs.com/ForEvErNoME/p/3383539.html 什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的 ...

随机推荐

  1. Spring cloud config client获取不到配置中心的配置

    Spring cloud client在配置的时候,配置文件要用 bootstrap.properties 贴几个说明的链接.但是觉得说的依然不够详细,得空详查. 链接1 链接2 链接3 原文地址:h ...

  2. <el-tag></el-tag>部分属性与vue版本的兼容问题

    [01]标签使用按钮样式<el-tag effect="dark" v-if="myhotelinfo.runstatus=='T'" type=&quo ...

  3. FFmpeg工具

    [0]安装ffmpeg //Linux系统下安装sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update ...

  4. springcloud(二):Eureka服务注册与发现

    Spring Cloud Netflix  该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix ...

  5. Last- Linux必学的60个命令

    1.作用 last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户.通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统. 2.格式 1ast[—n][-f file ...

  6. odoo 基本知识

    http://127.0.0.1:8369/web/database/managerhttp://127.0.0.1:8369/web/database/selectorhttp://127.0.0. ...

  7. HZOI20190810 T1

    A:blue(青蛙乱跳) 好像很多人都是用的队列?甚至还有用set 然而...博主太蒻了,只能找一个sb的规律 我们来手模一个样例: 10 9 16 30 2 4 6 9 11 15 18 19 25 ...

  8. 转: V4L2驱动程序架构

    源地址:http://blog.chinaunix.net/uid-26101960-id-3297657.html 1 V4L2简介 video4linux2(V4L2)是Linux内核中关于视频设 ...

  9. Win3.2有人用过么

    老牌子的操作系统. 了,有人用过么,我还在用,感觉挺不错的,哈哈哈哈哈.   1.0那一代,画面粗糙,几乎不能算GUI操作系统.   2.0,画面较1.0一代明显改善,可惜的是,手头没货.   3.0 ...

  10. numpy 常用工具函数 —— np.bincount/np.average

    numpy 常用工具函数 —— np.bincount/np.average numpy 常用api(一) numpy 常用api(二) 一个函数提供 random_state 的关键字参数(keyw ...