浮动和浮动清除的那点事

浮动是什么

首先我们来引入MDN对浮动的描述

float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动(文档流)中移除,尽管仍然保持部分的流动性(与绝对定位相反)。

原文中提到了该元素从网页的正常流动中移除,这里其实就是指的脱离文档流元素应沿其容器的左侧或右侧放置其实就是指脱离文档流之后,元素一直像最左边或者右边靠拢,直至碰到父元素或者另一个浮动元素。

浮动能解决什么问题

浮动能实现文字包裹效果,经常见到报纸或者杂志的排版,一张图片被一段文本包裹,而如果代码这样写

<div id="example-element" class="transition-all" style="float: none;">Float me</div>
<span>As much mud in the streets as if the ....</span>

实际上出来的效果是这样的
MDN官网示例

但是我们为第一个设置为浮动之后,就能达到我们想要的效果

MDN官网示例
有时候实现li标签同行显示也会用到浮动

浮动会导致什么问题

父元素高度塌陷因为子元素浮动脱离了文档流,父容器计算高度的时候不会计算浮动的子元素,所以会出现父元素高度塌陷的问题

MDN官网示例

如何避免这些问题

BFC:之前的文章有写过BFC在计算高度的时候会计算浮动元素的高度,那就好说了,只要将父元素设置为BFC就行了

clear:使用clear属性

clear属性的定义

MDN官网的定义

clear CSS 属性指定一个元素是否必须移动(清除浮动后)到在它之前的浮动元素下面。clear 属性适用于浮动和非浮动元素。

意思就是 clear为left就是当前元素必须在其左侧的元素下方显示

MDN官网示例

既然如此就有人提出了叫做clearfix的解决方案,专门用来清楚浮动,若父元素高度塌陷了,那么我在父元素的尾部插入一个伪元素,并且设置clear为both,意思是这个元素必须在其左右侧的浮动元素下方显示,这是之后就把父元素撑开了,高度塌陷的问题就解决了

 .warpper::after{
     content: "",
     display: block,
     clear: both
 }
posted @ 2020-09-01 11:06  j植树  阅读(100)  评论(0编辑  收藏  举报