2、设置浮动以后元素会向父元素的左侧或右侧移动,
3、浮动元素默认不会从父元素中移出
4、浮动元素向左或向右移动时,不会超过它前边的其他浮动元素
5、如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移
6、浮动元素不会超过它上边的浮动的兄弟元素,最多最多就是和它一样高
在浮动布局中,父元素的高度默认是被子元素撑开的,当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离, 将会无法撑起父元素的高度,导致父元素的高度丢失。
父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱,所以高度塌陷是浮动布局中比较常见的一个问题,这个问题我们必须要进行处理!
思想:在父元素的后面加内容,内容利用clear清除浮动元素带来的影响
说浮动布局,就得先知道文档流,文档流有 正常文档流 、 脱离文档流 。
对应的正常文档流如图,
例如01:
结果:
分析:对div01设置了左浮动,使div01脱离了文档流,div01是在div02的上面一层,实际的div02还是占据了一整行,div02的文字部分看着像被挤出来了,其实这就是文字环绕的实现(文字是英文时有点问题)。
例如02:
只设置后面两个div左浮动
结果:
例如03:
全部设置左浮动,会从左到右依次排列。(right的相反)注意这里出现了父元素高度塌陷,height为0
2.浮动带来的影响
效果如图:对比例3,父元素高度塌陷问题解决
此外,浮动可以用来实现两列布局或多列布局
例如:
结果:
1、找到产生这种现象的原因:浮动元素自身的高度低于相邻元素的文本的高度。2、根据原因利用css样式来控制它。有2个样式可以到达效果,样式只需添加在文字上即可。
第一种通过属性overflow来控制。如:
.fixWrapper {
overflow: hidden
zoom: 1
}
第二种通过属性display来控制。
.fixWrapper {
display: table
zoom: 1
}
但是第二种方法有缺陷,如果浮动元素周围有多个元素,这种方法只有与浮动元素相邻的元素有效果。为此可以通过定义一个元素比如div,添加样式将浮动元素周围多个元素包裹起来就可以。
<div class="fixWrapper">
<ul>...</ul>
<p>...</p>
</div>