文档流:文档流,是指盒子按照 html 标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从 左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置。
浮动的特性:
- 浮动元素有左浮动(float:left)和右浮动(float:right)两种 :右有浮动文字会倒过来,所有需要把编写顺序倒过来即可。
- 浮动的元素会向左或向右浮动,碰到父元素边界、浮动元素、未浮动的元素才停下来:
- 相邻浮动的块元素可以并在一行,超出父级宽度就换行 。如图:
- 浮动让行内元素或块元素自动转化为行内块元素(内联块元素)。
- 浮动元素后面没有浮动的元素会占据浮动元素的位置,没有浮动的元素内的文字会避开浮动的元素,形成文字饶 图的效果(如:div1设置了浮动,后面内容文字没有设置,会形成文字浮动效果。)
- 父元素内整体浮动的元素无法撑开父元素,需要清除浮动
- 浮动元素之间没有垂直 margin 的合并
清除浮动(父元素无法撑开):
- 在最后一个子元素的后面加一个空的 div,给它样式属性 clear:both(不推荐)
- 父级上增加属性 overflow:hidden
- 使用成熟的清浮动样式类,clearfix
clearfix代码如下:
.clearfix:after,.clearfix:before{ content: "";display: table;}
.clearfix:after{ clear:both;}
.clearfix{zoom:1;}
清除浮动的使用方法:
.con2{... overflow:hidden} 或者
<div class="con2 clearfix">
问题:假设一个容器有浮动元素,给每个元素挨个添加浮动,导致父元素高度无法撑开。如下图:
解决办法:给其父元素添加 overflow:hidden 效果如下图: