萝三画室

盒子模型,浮动,定位总结

看完慕课网HTML+CSS基础课程+《CSS权威指南》之后,尝试做了个Blog静态页面,通过动手深入理解了CSS盒子模型,float,position布局。记住以下原则,使用纯CSS排版布局时,思路就应该清晰多了。

盒子模型

关于盒子模型,首先要理解的一点是:==元素的width并不是元素的实际宽度==.width指的是元素中内容区的宽度,而内容区是被矩形盒子包裹着的。元素实际的宽度,是矩形盒子的宽度。比如我们定义了以下元素和内容

1
2
3
4
5
6
<body>
<div>
<p style="display:inline">我是内容</p>
<p style="display:inline">我是内容</p>
</div>
</body>

它们的实际位置关系如下

p元素的width是红框(内容区)的宽度;实际宽度是黑色虚线框的宽度,其值=width+左右两侧的(margin+border+padding)。

其次,正常文档流中,相邻两元素以margin边界对齐。

最后一点,对于正常文档流中的block父元素,其width=一行中所有子元素实际宽度之和。即div元素的width为图中虚线框国的宽度。

浮动

float会使元素脱离正常文档流,包含块是其距离最近的父元素。

定位

absolute、fixed会使元素脱离正常文档流,relative不会。

  • fixed的包含块是浏览器窗口。
  • relative的包含块是其自身。
  • absolute的包含块是据其最近的、position=absolute/relative的父元素。如果没有这样的父元素,则其包含块为Body元素。