- 绝对定位position:absolute 完全脱离了普通流,无法跟普通流建立交互关系(普通流能影响绝对定位,但绝对定位不影响普通流)。这样来说,在弹性布局的场景中,绝对定位就存在缺陷。但也因为它完全脱离文档流,定位绝对很擅长做层叠布局。另外,绝对定位对于元素位置的控制也是最为灵活的。
- 浮动,本身不是用来做布局的,而是做文字环绕效果。但是CSS2.1好像也就这个属性能够快速地满足一些需求,因此才有了浮动布局。浮动相对绝对定位好处是,它可以影响IFC,也可以通过 clear 清除浮动影响块级布局,可以与普通流建立良好的交互。 而且浮动本身是脱离普通流的,在顶端对齐和右对齐上有特别的优势。而 inline-block 的垂直对齐上有更多选择。
- inline-block,这个属性也不是用来布局的(偏向于排版),但是在 CSS3 普及之前,它的用处也很大。该元素的盒子在行框中进行格式化,其顺序与源HTML中的顺序一一对应。 同时该元素不脱离普通流,这比浮动来说有更大的优势,它可以跟普通流产生自然交互,而不必要借助去其他属性。而且相比浮动,相邻元素间的垂直对齐方式,inline-block 比 float 更加灵活, float 格式化时有一条规则,就是越高越好(因此常常表现为顶端对齐),而 inline-block 在行内格式化,拥有更灵活的垂直对齐方式。
应用:
- 如果使用了浮动,清除浮动就会成为你的副作用,而且如果你没有良好的HTML/CSS 结构的话,清除浮动是一个很复杂的事情。
- inline-block 虽然避免了清除浮动的事情,但是会有另一个副作用,即空白符问题。
- 当居右(右浮动)时, float是按先后顺序来的, 先写的排子右边; 而inline-block则保持左右顺序不变。
- 推荐网站http://learnlayout.com/了解CSS布局。