CSS

CSS--深入解析float规则

float:left || right ||none || inhert
无继承性
left : 元素向父元素的左边浮动

确定float元素的位置可以参照一下几点规则:

①浮动元素的外边距不会合并,浮动指浮动元素的外边距与包含块(最近的祖先块级祖先元素)的内容框(即不包含padding)左边(右边)对齐。

②浮动元素不会重叠,除非margin为负值.浮动元素也不会超出包含块内容框,除非margin为负值或者浮动元素的宽和高比包含块的大,只有这两种情况会超出。

③在文档结构中,如果浮动元素前是块级元素,则浮动元素不会和块级元素在一行。如果浮动元素后是块级元素,则后面的块级元素会忽略浮动元素,会和浮动元素在一行(但是此时浮动元素会覆盖块级元素的背景,还会影响块级元素文字的位置,例如left浮动时,块级元素的文字是不能在最左边显示的)。如果浮动元素前面或者后面是行内元素(包含inline-block),浮动元素的顶端会和行内元素所在行的行框的(margin)顶端对齐,而且此时浮动元素会忽略元素在文档中的顺序,优先排在左边或者右边。

④如果浮动元素的文档顺序在两个块级元素中间,且块级元素的外边距有合并,此时后面的那个块级元素和浮动元素在同一行,浮动元素的margin顶端和后面块级元素的padding顶端对齐。如果两块级元素没有外边距合并,那么浮动元素的margin顶端和后面块级元素的margin顶端对齐。

⑤浮动元素的顶端不能比之前所有浮动元素或块级元素的顶端更高

⑥通过将父元素设置为浮动元素,可以把浮动元素包含在父元素内,这样父元素的高度就会被其子浮动元素撑起。

⑦当浮动元素和行内元素和块级元素重叠时。行内框和一个元素重叠时,其边框、背景和内容都在浮动元素之上显示。块级元素与浮动元素重叠时,其边框和背景在浮动元素之下,而内容在浮动元素之上显示。注意,默认情况下,当块级元素和浮动元素重叠时,块级元素里面的内容(不管是文字还是其他的子元素)都会在浮动元素的margin边框之后,除非浮动元素的margin为负值。

⑧清除浮动
clear : left || right || both || none
应用于块级元素 无继承性
left:即元素的左边不能出现浮动
如果一个块级元素设置了clear,当margin-top为0时,浮动元素的margin为负值才会和浮动元素重叠,且位置最多上移到上面非浮动元素的底端。如果块级元素设置了margin-top,但是其值没有浮动元素的margin框高,此时取浮动元素的margin框高度和块级元素的margin-top中的大值作为块级元素padding框与上面非浮动元素的底端的距离。

在一个块级元素中,其中的浮动元素是不会覆盖同级的其他元素的,除非margin为负值,但是可以覆盖不在这个块级元素中的内容。