整 理:徐秀、晋哲
时 间:2015-10-23
说 明:float浮动原理、用法、清浮动方法
一、什么是float
float是在传统的印刷布局中,使文本可以按照需要围绕图片的布局方式。一般把这种方式称为“文本环绕”。浮动的元素仍然是网页流的一部分。浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。故而浮动框会影响相邻的元素样式表现。
二、float应用
float的可用值:
1.图文环绕的浮动效果。
设置img{float:right;}
2.替代无表格的首页布局
.sidebar{float:left;width:200px;...} main{margin-left:200px;...}
3.创建水平菜单栏
设置li{float:left;...}的效果。
设置li{display:inline-block;...}的效果。
4.创建段首字母悬浮于左侧
三、float的影响。
1.无法撑开父级的高度。
2.影响同级非浮动元素样式的表现。
3.ie6中float元素双边距bug。
四、 float的清除方法。
1. 清除对父级高度的影响
1.1. 指定父级高度。【不推荐】
1.2. 为父级渲染BFC(块级格式化上下文)【推荐,具体方法,量情况而定】
1.2.1. 父级overflow不为visible;可为(auto/hidden)
1.2.2. 父级设置display:inline-block/table-cell/table-caption/ flex/inline-flex;
1.2.3. 父级也设float 。
1.2.4. 父级设置绝对定位;position:absolute;
1.3 父级定义伪类:after;并设置父级zoom:1【推荐,某宝就使用的该方法】 way1: .clearfix:after{display:block;clear:both;content:"";visibility:hidden;height:0} .clearfix{zoom:1}
way2: .cf:before, .cf:after {content:"";display:table;} .cf:after {clear:both;} .cf {zoom:1;}
2. 清除对同级非浮动元素影响
2.1 为后面的非浮动元素添加“clear:both;”【推荐】
2.2 在浮动元素后面添加一个空的div,样式设置为clear:both;”【不推荐】
3. 清除IE6下的双边距bug。
问题描述:如果给元素设置了float,并设置了水平方向的margin【比如margin-left:100px】,会IE6下会出现margin-left:200px的显示效果。
解决方法:设置浮动元素的display:inline-block.