清除浮动的原理剖析

常用的清除浮动的几种方法总结下:

  1,手动设置一个标签(在浮动元素下方),然后对其设置clear属性  

  2,给浮动元素设置 :after伪类,创建块元素,设置clear属性

  3,给父元素设置浮动

  4,给父元素设置overflow设置非visible值(auto,hidden)

  5,给父元素的display设置为table-cell

  7,在ie6,7中,设置zoom或者width,height来触发haslayout,使父元素包含浮动元素

原理剖析:

  1,2方法之所以可以成功,是因为了clear属性。规范上说,对一个元素设置clear属性,那么该元素的上边框紧邻着浮动元素的margin-bottom渲染(假设

  元素上方为浮动元素,若不是浮动元素,则按照margin的设置进行布局)。这样对height设为auto的父元素而言,高度自然是包含了浮动元素。

  3,4,5方法主要激活了父元素的块级格式化上下文“属性”。块级格式化上下文有一些与块框不同的属性:

    1)包含浮动元素

    2)不会被浮动元素遮盖

    3)防止外边距叠加

  

  激活BFC的条件有一些,他们是:

    1)设置浮动

    2)设置绝对(固定)定位

    3)设置display:inline-block,table-cell,table-caption(设置为table也可以起作用,但是不是因为是它的功效,是因为设置display:table,css会

    添加匿名表单,自然也包含table-cell,因此该匿名表单也拥有块级格式化上下文)

    4)overflow:auto || hidden || scroll

  7方法只对IE6,7有效,触发hasLayout的方式:

    1)设置width和height值(非auto)

    2)设置浮动

    3)display:inline-block

    4)zoom:(非auto)

    5)display:absolute

时间: 2025-01-09 13:12:11

清除浮动的原理剖析的相关文章

学习笔记:清除浮动的原理(BFC与hasLayout)

利用元素浮动来布局相信大家已经不再陌生了,但浮动会带来高度塌陷的问题(这里就不详诉了,有兴趣的朋友可以自行搜索).既然浮动会带来不好的影响,那我们就需要去解决这个问题.其实清除浮动带来的影响也就是我们常说的”清除浮动”的方法非常简单,网上随便一搜就知道了,但大部分像我这样的菜鸟都不知道背后的原理是什么.所以今天我主要是谈谈清除浮动背后的原理. 要了解清除浮动的原理,首先我们要了解BFC这个名词. BFC(Block Fomatting Context) BFC,翻译过来就是”块级格式化上下文”.

css清除浮动的原理

最近学习css发现了高度塌陷时候要清除浮动,为了理解清楚浮动原理,网上找了不少资料,发现都写的不是很清楚,而且都是一模一样的内容,我在里分享一下我对清楚浮动原理的理解, 如果你已经很了解什么是浮动和浮动的效果你可以直接跳转到三.如何清除浮动(重点)阅读 一.什么是浮动首先我们需要知道定位 元素在页面中的位置就是定位,解决问题之前我们先来了解下几种定位方式 1.普通流定位 static(默认方式)  普通流定位,又称为文档流定位,是页面元素的默认定位方式  页面中的块级元素:按照从上到下的方式逐个

css-浮动与清除浮动的原理详解(清除浮动的原理你知道吗)

float元素A的特点: 脱离文档流 靠向left或right float元素会和块盒子重叠 准确来说,是块盒子和A重叠,但块盒子内容会浮动在A周围 不会和inline元素重叠 <div class="parent"> <div class="box"></div> <p> 孟子曰:"君子有三乐,而王天下不与存焉.父母俱存,兄弟无故①,一乐也:仰不愧于天,俯不怍②于人,二乐也:得天下英才而教育之,三乐也.君子

清除浮动的原理和方法

本文复制自 http://blog.csdn.net/clare504/article/details/39524215. 1. 问题的由来有这样一种情形:在一个容器(container)中,有两个浮动的子元素.<div>        <div style="float:left;width:45%;"></div>        <div style="float:right;width:45%;"></di

伪元素清除浮动及原理

.clearfix:after {content:"."; display:block; height:0; visibility:hidden; clear:both; } .clearfix { *zoom:1; } 1) display:block 使生成的元素以块级元素显示,占满剩余空间; 2) height:0 避免生成内容破坏原有布局的高度. 3) visibility:hidden 使生成的内容不可见,并允许可能被生成内容盖住的内容可以进行点击和交互; 4)通过 cont

清除浮动的四种方式及其原理理解

清除浮动的四种方式及其原理理解 本文介绍了四种清除浮动的方法,并尝试解释其原理.在理解了各种清除浮动的原理之后,你会发现,很多清除浮动的方法本质上其实是一样的.掌握这些原理,相信你可以根据场景和需求,灵活运用原则发展出不同的清除浮动的方法,而不再死记或拘泥于文中提到的方法. 一.为什么要清除浮动 在讲清除浮动的方法之前,我们先来了解一下为什么要清除浮动,清除浮动的目的是什么,即,要解决什么样的问题.来看一个浮动的例子(略去了文字内容): <div class="topDiv"&g

清除浮动与浮动闭合

浮动(float)在网页布局中随处可见,通过浮动,我们能很方便地布局,但浮动之后遗留下来太多的问题需要解决,特别是IE6-7 浮动从何而来?我们为何要清除浮动?清除浮动的原理是什么?下面将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手. 一.清除浮动还是闭合浮动 (Enclosing float or Clearing float)? 很多人都已经习惯称之为清除浮动,我也一直这么叫着,但是确切地来说是不准确的.我们应该用严谨的态度来对待代码,也能更好地帮助我们理解开头的三个问题. 1)

清除浮动的方法-那些年我们一起清除过的浮动

浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器).也许很多人都有这样的疑问,浮动从何而来?我们为何要清除浮动?清除浮动的原理是什么?本文将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手.一.清除浮动 还是 闭合浮动 (Enclosing float or Clearing float)?很多人都已经习惯称之为清除浮动,以前我也一直这么叫着

再聊清除浮动

浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器).也许很多人都有这样的疑问,浮动从何而来?我们为何要清除浮动?清除浮动的原理是什么?本文将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手. 一.清除浮动 还是 闭合浮动 (Enclosing float or Clearing float)?很多人都已经习惯称之为清除浮动,以前我也一直这么叫