当前位置: 首页 > Web前端 > CSS

css清除浮动的四种常用方法实现

时间:2023-03-30 18:04:18 CSS

浮动和清除浮动在页面布局中经常用到,之前知道但不知道为什么。看了很多文章,有了一些深入的了解,特整理一下!浮动的目的:浮动的最初目的是实现图片周围可以显示文字等内容。后来发现浮动方便布局,所以支持浮动任意元素。一行显示一行块元素,显示代码如下:

如果不设置浮动,显示如下。如果只设置blockafloagt:left:结果如下:blocka脱离了文档原来的正常流向,不再占据原来的位置,所以b移动到a原来的位置,因为a是浮动的,会覆盖b,因为父元素没有设置高度,所以父元素的高度由子元素决定,现在是b的高度,a浮动后超过了父元素的高度.现在将blockb设置为floagt:left,这样两个块元素可以显示在一行中:现在我们可以看到,虽然两个块元素显示在一行中,但是现在父元素的高度为0,会影响siblings元素的排版,所以我们现在要解决这个问题,所以我们使用清除浮动的操作和清除浮动的方法。清除浮动后,正常显示如下:1、父元素高度固定时,直接设置父元素高度height:200px即可正常显示2、添加块元素,使用clear:both清除
/div>clear:both是清除这个元素左右两边的浮动,所以这个元素会单独占一行,在a和b的下一行,但是clear还在文档流中,必须包含在父元素中,所以父元素为了包含clear只能增加高度,最后的效果就是把高度撑起来。以这种方式清除浮动会给文档增加不必要的结构,因此不推荐使用。3.给父元素设置overflow清除浮动overflow值可以是除visible之外的任意值,达到撑起高度的效果,但是scroll导致滚动条一直存在,hidden会隐藏超出border的部分,所以选择的时候要特别注意注意为什么overflow会达到这个效果?由于是块级格式化上下文(BlockFromattingContext),W3C对BFC的定义如下:浮动元素和绝对定位元素,非块级框的块级容器(如inline-blocks,table-cells,和表格标题)以及溢出值不“可见”的块级框,将为它们的内容创建一个新的BFC(块级格式化上下文)。BCF可以包含浮动元素,所以可以达到支撑高度的效果。4.使用after伪类原理和第二种方法类似,但区别在于:clear在html中插入一个div。clear标签,content使用其伪类clear:after在元素内部添加类似div.clear的效果。以上是几种常用的方法,大家可以根据不同的场景选择合适的方法。