- 绝对定位 (absolute)
参考对象:祖先级元素
相对于离自己最近设置了定位的祖先级元素(不包括static,static没有定位),如果父级元素没有定位,则向祖父级、曾祖父级等上级元素找。
绝对定位元素脱离正常流(文档流),所以元素原来的位置会被其他元素占用。
绝对定位元素脱离了正常流,有覆盖其他元素的情况。
绝对定位元素的祖先元素有多个都设置了position: absolute或position: relative ,那么是以最近的一个祖先元素作为参考物,即相对于最近的那一个祖先元素进行移动定位。
- 相对定位(relative)
参考对象:自己
相对定位的挪移,是相对于自己移动,即自己原来的所在位置(自己原来左上角作为坐标系的原点),
是相对于自己移动,因此原来的位置还存在。
绝对定位一样会有覆盖其他元素的情况.
- 相对定位用来作为绝对定位的容器块的原因。
因为设置了一个元素的position为absolute,而他的父元素或者祖元素position都是默认值,他是会相对于body进行定位的。而大多数我们使用absolute时,只是想让相对于某一个非body的具体元素定位。同时,我们不想让这个具体元素不脱离正常文档流,但是从position的取值来看,不脱离文档流的设置只有static,relative。在加上absolute的相对定位原则,只有给具体元素设置position:relative。这样,这个元素不会脱离文档流,position为absolute的元素也能相对它进行定位。