相对于元素在正常情况下出现在页面文档流的位置,CSS提供了几种方法来定位。
静态定位(static)表示按照正常定位方案,元素盒按照在文档流中出现的顺序依次格式化;
相对定位(relative)将移动元素盒,但是它在文档流中的原始空间会保留下来;
绝对定位(absolute)是指元素盒彻底从文档流中脱离出来,并相对于其容器块进行定位。因为这些元素从文档流中脱离出来,所以它们不再影响周边元素的布局,并且它们占据的空间不被保存;
固定定位(fixed)与绝对定位类似,元素从文档流中脱离,但是它们不是相对于容器块定位,而是相对于视口(viewpoint)定位(大多数情况下,这个视口就是指浏览器窗口)。
元素的容器块:
1、根元素(html)创建的容器块叫做“初始化容器块”(有些浏览器将初始化容器块放在body元素)。初始化容器块的长方形盒子填充了浏览器窗口视口的大小。如果没有其他容器块,CSS就使用初始化容器块;
2、对于被设置为静态或者相对定位的非根元素,容器块是它最近的块级元素、表格单元的内容区的边缘;
3、对绝对定位的非根元素,容器块是它最近的不是静态定位的祖先元素。
相对定位元素有如下几个基本特征:
1、使用CSS样式规则{position:relative;}声明;
2、使用一到多个偏移属性(top、right、bottom、left)相对于它们在正常文档流中的初始位置进行定位。没有设置偏移属性的,默认被设置为auto;
3、在文档流中所占据的原始空间被保留;
4、可能会覆盖其他元素。
绝对定位元素有如下几个基本特征:
1、使用CSS样式规则{position:absolute;}声明;
2、使用一到多个偏移属性(top、right、bottom、left)相对于其容器块的边缘进行定位。没有设置偏移的,默认被设置为auto。偏移值应用于元素盒的外边缘(如果有margin值的话,就包括margin值);
3、绝对定位的元素完全从文档流中脱离出来。该元素在正常文档流中所占据的空间不保留,并且它不再影响其他元素(例如,文本不会围绕它)。