float(CSS浮动)

html-css07

float(CSS浮动),第1张

1、浮动元素会完全脱离文档流,不再占据文档流中的位置

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>