CSS面试考点之清除浮动
2021-04-29 本文已影响0人
团子哒哒
1、浮动产生原因
一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSSfloat浮动就产生了。
![](https://img.haomeiwen.com/i20308335/3644de7c9b02bdd7.png)
![](https://img.haomeiwen.com/i20308335/36e3530d1b4fe097.png)
![](https://img.haomeiwen.com/i20308335/c6806f9a8fbbe055.png)
本来两个对象盒子是在黄色盒子内,因为对两个盒子使用了float浮动,所以两个黑色盒子产生了浮动,导致黄色盒子不能撑开,这样浮动就产生了。
2、浮动产生负作用
1)背景不能显示
由于浮动的产生,如果对父级设置了背景,由于父级不能被撑开,所以导致背景不能显示。
2)边框也不能撑开
如果父级设置了CSS边框属性(css border),由于子级里使用了float属性,产生浮动,父级不能被撑开,导致边框不能随内容而被撑开。
3)margin padding设置值不能正确显示
由于浮动导致父级子级之间设置了padding、margin属性的值不能正确表达。特别是上下边的padding和margin不能正确显示。
3、清除浮动
1)对父级设置适合CSS高度
对父级设置适合高度样式清除浮动,这里对“topDiv”设置一定高度即可,一般设置高度需要能确定内容高度才能设置。需要准确的高度,不符合实际。
![](https://img.haomeiwen.com/i20308335/8ca908cfcd973e27.png)
2)clear: both 清除浮动
为了统一样式,我们需要新建一个盒子div,样式设置为“clear: both”(both 在左右两侧均不允许浮动元素),然后在我们在父级元素结束前引入此div。这样即可清除浮动。
![](https://img.haomeiwen.com/i20308335/1775fb8defa97760.png)
![](https://img.haomeiwen.com/i20308335/345a20d07c2ed9c7.png)
3)父级div定义一个伪类:after
父级元素的最后,添加了一个:after伪元素,通过清除伪元素的浮动,达到撑起父元素高度的目的。注意到该伪元素的display值为block,即,它是一个不可见的块级元素(有的地方使用table,因为table也是一个块级元素)。
![](https://img.haomeiwen.com/i20308335/3470f04703c26cc0.png)
3)父级div定义 overflow属性
如对父级CSS选择器加overflow:hidden样式(形成BFC块级格式化上下文),除了"visible"之外的任何有效值,它们都能达到撑起父元素高度,清除浮动的目的。优点是可以很少CSS代码即可解决浮动产生。
![](https://img.haomeiwen.com/i20308335/fd5911c9ebd44e12.png)