《CSS权威指南》学习记录——浮动

浮动

关键字:float。可接受:left、right、none(默认值)。适用于所有元素。无继承性。

<img src="b4.gif" style="float:left;alt="b4"" >

这里写图片描述

一个元素浮动时,其他元素会“围绕”该元素。
浮动元素不会与周围元素发生外边距合并。
如果要浮动一个非替换元素,则必须要为其声明一个width。
让一个元素浮动,它会像块级元素一样摆放和表现,但本质不变。

几点规则:
1、浮动元素的左(右)外边界不能超出其包含块的左(右)内边界。
这里写图片描述
带圆圈的数字表示标记元素在源文档中的位置,带方框的数字表示浮动元素的位置和大小。

2、浮动元素的左(右)外边界必须是源文档中之前出现的浮动元素的右(左)外边界,除非后来的浮动元素顶端在之前浮动元素的底端下面。
这里写图片描述

3、左浮动元素的右外边界不会在其右边右浮动元素的左外边界的右边;右浮动元素的左外边界不会在其左浮动元素的右外边界的左边。o(╯□╰)o

这里写图片描述
这条规则可以防止重叠。假设有一个body,宽度为500px,它有两个图像,宽度都为300px,一个浮动在左边,一个浮动在右边。则第二个图像会被要求向下浮动,直到其顶端在左浮动元素底端之下。

4、一个浮动元素的顶端不能比其父元素的内顶端更高。如果一个浮动元素在两个合并外边距之间,放置这个浮动元素时就好像在两个元素之间有一个块级父元素。
这里写图片描述
规则的前半部分可以防止浮动元素一直浮动到文档的顶端。规则的后半部分是对某些情况下的对齐进行微调——假设有三个段落,让中间的段落浮动,这时,浮动段落就会像有一个块级父元素一样浮动。这能防止浮动段落一直向上浮动到三个段落共同父元素的顶端。

5、浮动元素的顶端不能比之前所有浮动元素和块级元素的顶端更高。
这里写图片描述

6、如果一个浮动元素之前出现另一个元素,则浮动元素的顶端不能比包含该元素生成框的任何行框的顶端更高。
这里写图片描述
这个规则进一步限制了元素的向上浮动。假设段落中间有一个浮动图像,则该图像的顶端最高只能放置在其所在行框的顶端。

7、左(右)浮动元素的左边(右边)有另外一个浮动元素,则前者的右(左)外边界不能超出其包含块的右(左)边界的右(左)边。
这里写图片描述
也就是说,浮动元素不能超出其包含块的边界。当多个浮动元素在同一行时,如果放不下,后来的元素会向下浮动到新的一行。

8、浮动元素必须尽可能高地放置。
这里写图片描述

9、左浮动元素必须向左尽可能远,右浮动元素必须向右尽可能远。位置越高,就会向左或向右浮动得越远。
这里写图片描述

实用行为

当浮动元素比父元素高时,会超出父元素的底端(之前的规则并没有对底端进行限制)。例如:
这里写图片描述
CSS指出:浮动元素会延伸,从而包含其所有后代浮动元素。所以,通过将父元素设置为浮动元素,就可以将浮动元素包含在其父元素内。

负外边距可能导致浮动元素移到其父元素的外面。例如考虑一个向左浮动的图像,它的左外边距和上外边距都是-15px,放在一个div中,div没有内边距、外边距、边框:
这里写图片描述

这里写图片描述

那么问题就来了:使用负外边距时,如果浮动元素超出其父元素,文档会如何显示?显然,这取决于用户代理,由其决定是否重新显示文档。

还有一种方法可以使浮动元素超出其父元素的左右内边界,即浮动元素比父元素更宽。具体是向左超出还是向右超出,取决于浮动方式:
这里写图片描述

浮动元素、内容和重叠

考虑一个浮动元素与正常流中的内容发生重叠会如何显示?

CSS规范明确指出:
1、行内框与一个浮动元素重叠时,其边框、背景和内容都在浮动元素之上显示;
2、块框与一个浮动元素重叠时,其边框、背景都在浮动元素之下显示,而内容在其上显示。
这里写图片描述

清除

关键字:clear。可接受:left、right、both、none。应用于块级元素。无继承性。例如:

h3{clear:left;}/*使h3的左边没有浮动元素*/

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

CSS2.1中引入了清除区域(clearance)。清除区域是在元素上外边距之上增加的额外间隔,不允许任何浮动元素进入这个范围内。如果希望清除元素的顶端和浮动元素的底端有一定距离,可以为浮动元素设置一个下外边距。因为浮动元素的外边距边界定义了浮动框的边界。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章