浮动和清浮动

99 阅读2分钟

1、什么是浮动?

首先解释一下文档流:
	文档流可以显示的对象在排列时所占的位置。
	浮动:使元素脱离正常文档流,按照指定方向发生移动,直到碰到它的父元素边界或另外一个浮动元素的边框为止
tips:元素的水平方向浮动,元素只能左右移动而不能上下移动

2、浮动属性:

float: left; 元素向左浮动
float: right; 元素向右浮动
float: none; 默认值,元素不浮动

3、浮动的特性:

浮动会使元素脱离正常文档流;
浮动元素可以提升层级;
浮动可以使行级元素支持宽高;
浮动可以使块级元素由内容撑开;
元素添加浮动之后,不占位,父级盒高度为0

4、浮动带来的影响

元素浮动以后,脱离正常文档流,导致父元素高度塌陷,会影响与父元素同级的后续元素的正常布局

5、清浮动的几种方法:

  • 为浮动元素的父级盒加固定的高度。缺点:不够灵活
  • 为浮动元素的父级盒加浮动。缺点:会产生新的浮动问题
  • 为浮动元素的父级盒设置overflow属性,属性值可以是hidden|scroll|auto。缺点:可能会导致内容显示不完全;优点:代码简洁
  • 在浮动元素之后,跟浮动元素呈并列关系的位置,加一个空div,在空div上添加一个属性clear: both。缺点:代码冗余;优点:通俗易懂、书写方便.
  • 推荐方式:给浮动元素的父级盒加类名.clearfix,不会在结构上产生冗余代码,可以重复使用,符合闭合浮动思想,结构语义化正确
         .clearfix{ *zoom:1; }
         .clearfix::after{
             content: "";
             display: block;
             clear:both;
         }

6、overflow属性——溢出隐藏,包含水平方向和垂直方向

overflow-x属性:只包含水平方向
overflow-y属性:只包含垂直方向
overflow: visible; /*溢出显示,默认值*/
overflow: hidden;/*溢出隐藏*/
overflow: scroll; /*溢出显示滚动条*/
overflow: auto;/*自动*/
overflow: inherit; /*继承*/

7、clear属性——清浮动

clear: left; 清除左侧浮动
clear: right; 清除右侧浮动
clear: both; 清除两侧浮动