清除浮动的方法
浮动 Float 是 CSS 中的一种布局方式。它的渲染位置在行框与包含块之间,这样就可以使行框内文字与浮动元素不重叠并且环绕它显示。在布局过程中也经常会使用它来达到左右并排布局的效果。但是,由于浮动特性,容器如果没有明确设定高度,会依照普通流内元素高度设置,这样就会导致脱离普通流的浮动元素溢出容器,影响其后元素布局。
清除浮动是面试中经常遇到的问题,总结一下清除浮动的方法:
设置原型,一个父元素,两个子元素左浮动
清除浮动实现目的使父元素的高度被子元素撑满。
1、clear: both
添加 空div标签,放在父元素最后一个子元素位置,设置样式为clear:both。
2、设置父元素高度
如果子元素高度确定,则设置父元素高度等于子元素高度,则看起来父元素被子元素撑满,如果子元素高度不确定,这个方法不合适。
3、使用BFC
BFC有一个特点:计算BFC的高度时,浮动元素也参与计算,我们可以将父元素设置overflow属性形成BFC,这样浮动元素的高度也会参与计算,父元素的高度就会被浮动元素的高度撑满。
效果和上图一样。
4、万能清除法after伪类
清浮动
after伪类
清浮动利用:after
和:before
来在元素内部插入两个元素块,从面达到清除浮动的效果。其实现原理类似于clear:both
方法,只是区别在于:clear在父元素最后插入一个div.clear标签,而伪类清除法利用父元素的伪类在元素内部增加一个类似于div.clear的效果,没有在原来HTML文件中操作DOM。
这是目前最主流的清除浮动的方法,推荐优先使用。
效果同上
5、使用table清除浮动
效果如下
6、以浮制浮
将父级同样设置为浮动,能让子元素撑满整个父元素,但是再整体布局中,父元素也变成浮动了并不是我们想要的,除非父元素已经确定位置。
Last updated