动力设备网 加入收藏  -  设为首页
您的位置:动力设备网 > 科技 > 正文
清除浮动的方法
清除浮动的方法
提示:

清除浮动的方法

清除浮动的方法:额外标签法、父级添加overflow法、使用after伪元素清除浮动。 1、额外标签法:给谁清除浮动,就在其后额外添加一个空白标签,优点:通俗易懂,书写方便。(不推荐使用)。缺点:添加许多无意义的标签,结构化比较差。 2、父级添加overflow法:可以通过触发BFC的方式,实现清浮动效果。必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度。 3、使用after伪元素清除浮动:after方式为空元素的升级版,好处是不用单独加标签了。IE8以上和非IE浏览器才支持:afterzoom(IE专有属性)可解决ie6.ie7浮动问题(较常用推荐)。 为什么要清除浮动 1、清除浮动可以避免页面布局混乱。当多个元素设置了浮动属性后,它们会互相影响,导致元素的位置错乱,甚至覆盖在一起。这会给用户带来困扰,使页面难以阅读和使用。通过清除浮动,可以保持页面元素按照预期的布局排列,提高用户体验。 2、清除浮动可以避免元素高度塌陷的问题。当一个元素设置了浮动属性后,它会脱离文档流,不再占据原来的位置。这会导致父元素的高度无法正确计算,从而导致父元素高度塌陷。这种情况下,父元素的背景色或边框可能无法正确显示,影响页面的美观性和完整性。通过清除浮动,可以解决这个问题,确保页面元素的高度正确计算。 3、清除浮动还可以提高页面性能。当页面中存在大量浮动元素时,浏览器需要不断计算和重排元素的位置,这会消耗大量的计算资源和时间。这不仅会影响页面的加载速度,还会降低页面的响应性能。通过清除浮动,可以减少浏览器的计算量,提高页面的性能和响应速度。

浮动与清除浮动的六种方法
提示:

浮动与清除浮动的六种方法

css中,一共给我们了三种布局方式 标准文档流 浮动(float) 定位(postion) 在元素进行浮动后,会出现父元素没有高度的情况,下面的内容会直接弹到上面的div盒子下面, 这是因为元素浮动后脱离了标准流 ,父盒子无法检测到子元素,于是高度变成了0 我们需要清除浮动 清除浮动的本质是清除浮动元素造成的影响:浮动的子标签无法撑开父盒子的高度 注意: 方法1:固定宽高 给浮动的元素添加父级div盒子,再给父级盒子设置高度 方法2:一起浮动 父元素也添加浮动,这样父元素也脱离文档流 方法5:父级添加双伪元素 :after 方式是额外标签法的升级版。给父元素添加: 方法6.父盒子添加overflow: hidden;触发BFC 方法简单,常用 BFC Block fomatting context(块级格式化上下文),是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。 简单来说:bfc是创建了一个单独的区域,容器外的元素绝对无法影响到bfc内部的元素 1、float的值不是none。 2、position的值不是static或者relative。 3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex 4、overflow的值不是visible 在布局中经常出现,两个相邻的盒子,上面盒子设置了 margin-bottom: 20px,下面盒子设置了margin-top: 30px;本来期望是20+30=50px,但在使用时并不是求和,而是取最大值,最后变成了50px 这时我们可以设置bfc来实现隔离开元素,防止他们相互影响 解决方案 1.用一个大盒子包住下面的盒子,设置大盒子是padding-top 2.使用一个大盒子包住下面的盒子,设置是overlow,触发bfc 在PC端布局中,常见左侧宽度固定,右侧随浏览器的变化而自适应,通常是将左侧栏浮动来实现的,右侧使用block来自动填满内容,但是随着右侧内容满了,就会挤到左侧底部 但我们只要为右侧大盒子触发bfc,触发后就是一个单独的空间,绝对不会挤到左侧去 在布局中经常出现子元素浮动了,父元素检测不到子元素的高度而坍塌高度变成0,这时我们需要清除浮动,而原理就是用BFC形成一个独立的空间,而空间内的浮动元素也被重新计算高度撑开盒子

为什么要清除浮动
提示:

为什么要清除浮动

1、在网页中,DIV一般都是嵌套的,外面称为窗口,里面的DIV存放内容,如果不浮动的话,如下面这段代码

Content here

本来我们期望看到的是,外面背景为#ccc的层包含了里面背景为#333的层,但实际上,外面的层在显示的时候高度几乎为0,这就是因为里面的层用了浮动,但如果强制规定外层容器的尺寸,则显得就不那么灵活了,高度就不能自动适应了。这时,如果我们在里面清除浮动

Content here


那么显示就正常了。
2、如果全部元素都浮动的话,理论上也是可以的,并且有很多网页的排版布局都已经实现了全部DIV化,但这仅限于排版布局,因为这是DIV的强项,但是包含内容这块还是让其他元素去做吧。因为如果功力不到的话,全部浮动的定位和尺寸问题不太好把握,浏览器之间显示的也不尽相同。