今天我想个大家分享的内容如题,是清除浮动。这个问题我本想以后再写,但今天一下子想不起来关于CSS还有什么可写的了,今天就把这个内容先拿出来谈一下吧,后面的文章内容范围相对来说我会写的相对随意一点,但多以JS为主。
什么是清除浮动?它所解决的是什么问题?
标题上写了两个问题,可其实这是为了说的清楚一点而已,就我个人的理解而言我觉得其实是一个问题。接下来我们就具体的看一下这个问题的描述(下面这段字出于懒得考虑我就引用别人的描述了,应该不会侵权吧?):
在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。
上面这段就是关于这个问题的描述,大家可以自己去写个demo试一下,其实就是父类元素缩成了一条线,而子元素就自然的流到了父类元素外,如果场景再大一些,流出的子元素还会影响到外面内容的布局,导致肉眼可见的布局问题,为此呢,我们需要在有的位置清楚浮动。
清除浮动的的常用方式
看过我别的文章的朋友相信也发现了,在一些涉及分支过多的技术上我大多只会介绍常用的或比较有特色的几个(主要因为我自己也只会这么几个),因为我觉得如果之谈开发很多时候一个问题其实有一个解决方案就能处理,多几个也只是为了应对某些特殊场景,而在开发之外我们做拓展,我觉得掌握有特色的就可以了。
闲话说完,接下来我就赶紧给大家介绍一下我觉得一些需要了解的方法:
1,为父类元素设置高度
这个方法是最简单的,即你直接给父类元素设置一个固定的高度把他撑开就可以了,看上去就能实现正常的布局效果。
其实现原理上来说,就会发现这种方法存在许多问题。本质上来说这个方法并没有真正意义上清除了浮动,看上去是父类元素包裹了其内的浮动元素,可实际上只是我们手动撑开了父类元素,然后浮动元素会和一般情况下的非浮动元素重合,说直白一点就是浮动元素压在了父类元素上面,从而表面上清除了浮动。
看了上面的实现原理,相信大家也大概能想到这种方法的缺点,你的父类元素只能是固定高度的,并且必须要提前知道才能设置,在如今动态、多设备、多解析器等因素的影响下这个方法可用范围是及少的,但这个方法凭借其简单的实现和其对我们理解浮动清除问题有很大的帮助,所以还是选择介绍一下这个方法。
我看了一下,这篇文章到这里只算完成了一半吧,如果要今天完成可能略显匆忙,不符合我的节奏=。=,今天就写到这里吧,明天我会继续就这个问题和大家做一个分享。