【分享】说说标准——CSS核心可视化格式模型(visual formatting model)之八:float 特性以及浮动(Float)定位细则一
浮动特性非常有用,3大布局核心之一。虽然如此,它涉及内容过多,浏览器兼容性问题也很多。它的定位不仅涉及 包含块,还涉及到了行框,块框,还有行内框等内容;并且,各浏览器对其的支持还有不少兼容性问题。因此,它既是美梦又是噩梦。
那么,浮动产生的困惑缘何而生,又由何而灭呢?一切都由W3C标准来定夺吧……
float 特性
'float'
适用于哪些元素
可设置给任意元素,但只适用于生成非绝对定位框的元素。
例:
<div style="width:500px; height:150px; border:1px solid green; position:relative;"> <div style="width:100px; height:100px; float:right; position:absolute; border:1px solid red;">absolute</div> <div style="width:100px; height:100px; float:right; position:relative; border:1px solid red;">relative</div></div>
<style type="text/css"> .sub { width: 100px; height: 100px; background-color: green; margin:0 20px; }</style><div style="width:500px; border:2px solid red; overflow:hidden;"> <div class="sub" style="float:left;">left</div> <div class="sub" style="float:right;">right</div></div>
<style type="text/css"> .sub { width: 200px; height: 100px; background-color: green; margin:10px; }</style><div style="width:500px; border:2px solid red; overflow:hidden;"> <div class="sub" style="float:left;">left1</div> <div class="sub" style="float:left;">left2</div> <div class="sub" style="float:left;">left3</div></div>
<style type="text/css"> .sub { width: 100px; height: 100px; background-color: green; margin: 10px; }</style><div id="container" style="width:200px; overflow:hidden; border:1px solid red;"> <div class="sub" style="float:left;">left</div> <div class="sub" style="float:right;">right</div></div>
宽度设置成300px之后,则可以放到一行。
5. 浮动框的顶外边不能高于它包含块的顶部。当一个浮动框发生在两个margin折叠的中间时,浮动元素的定位好像它有另一个空的块级父框位于常规流中。那个空父框的定位规则在margin 折叠一节有说明。
第一句好理解,说的是顶边不能超出包含块,跟左边右边不能超出一个道理。
后面的规则是说,当浮动框处于两个发生margin折叠的地方时,会被当作被包含在一个空的块框中,它上面和下面的margin会穿过它发生margin折叠,当它不存在。
<style type="text/css"> div { width: 100px; height: 100px; background-color: green; color: white; margin: 50px; }</style><div>A</div><div style="float:left; margin:10px; background-color: red;">O</div><div>B</div>