1, 绝对定位 (position: absolute) : 如果想为元素设置层模型中的绝对定位, 需要设置 position:absolute(表示绝对定位), 这条语句的作用将元素从文档流中拖出来(即不依赖与前面的一个 DIV 的位置可以独立设置位置), 然后使用 left,right,top,bottom 属性相对于其具有定位属性(即 top\right\bottom\left 定位属的) 的父包含块进行绝对定位. 如果不存在这样的包含块, 则相对于 body 元素, 即相对于浏览器窗口.
2, 相对定位 (position: relative) : 如果想为元素设置层模型中的相对定位, 需要设置 position:relative(表示相对定位), 它通过 left,right,top,bottom 属性确定元素在正常文档流中的偏移位置. 相对定位完成的过程是首先按 static(float) 方式生成一个元素(并且元素像层一样浮动了起来), 然后相对于以前的位置移动, 即默认的位置[0,0] , 移动的方向和幅度由 left,right,top,bottom 属性确定, 偏移前的位置保留不动.
3, 固定定位 (position: fixed): 表示固定定位, 与 absolute 定位类型类似, 但它的相对移动的坐标是视图(屏幕内的网页窗口) 本身. 由于视图本身是固定的, 它不会随浏览器窗口的滚动条滚动而变化, 除非你在屏幕中移动浏览器窗口的屏幕位置, 或改变浏览器窗口的显示大小, 因此固定定位的元素会始终位于浏览器窗口内视图的某个位置, 不会受文档流动影响, 这与 background-attachment:fixed? 属性功能相同.
4, 被关联的绝对定位: 主要是 release 和 absoute 之前的对应关系 . 上面说的是单一的绝对定位, 而在实际的应用中我们常常会需要用到一种特别的形式. 即希望定位元素要有绝对定位的特性, 但是又希望绝对定位的坐标原点可以固定在网页中的某一个点, 当这个点被移动时绝对位定元素能保证相对于这个原坐标的相对位置. 也就是说需要这个绝对定位要跟着网页移动, 而并且是因定在网页的某一个固定位置. 通常当网页是居中形式的时候这种效果就会显得特别的重要. 要实现这种效果基本方式就是为这个绝对定位的父级设置为相对定位或是绝对定位. 那么绝对定位的坐标就会以父级为坐标起始点.
虽然是如此, 但是这个坐标原点却并不是父级的坐标原点, 这是一个很奇怪的坐标位置. 我们看一下模型图示:
我们看到, 这个图中父级为黑灰色区块, 子级为青色区块. 父级是相对定位, 子级是绝对定位. 子级设置了顶部位移 50 个像素, 左倾位移 50 个像素. 那么我们看, 子级的坐标原点并不是从父级的坐标原点位移 50 个像素, 而是从父级块的 padding 左上边缘点为坐标起始点(即 A 点). 而父级这里如果要产生位置移动, 或是浏览器窗口大小有所变动都不会影响到这个绝对定位元素与父级的相对定位元素之间的位置关系. 这个子级也不用调整数值.
来源: http://www.bubuko.com/infodetail-3099233.html