Static
postion的默认值
文档流
top、bottom、left、right或者 z-index无效 body标签为定位原点
Relative
相对定位
文档流
但是top/left/right/bottom属性是生效的, 它还占有文档空间而且占据的文档空间不会随top / right / left / bottom 等属性的偏移而发生变动,也就是说它后面的元素是依据之前的位置定位。
添加margin,padding属性后还是会改变位置的。body标签为定位原点
Absolute
绝对定位
脱离文档流,根据祖先类元素(必须是以position非static方式定位的父类以上元素)进行定位。
html作为原点定位 必须指定 left、right、 top、 bottom属性中的至少一个,否则默认值 auto,这将导致对象遵从正常的HTML布局规则,在前一个对象之后立即被呈递,简单讲就是都变成relative,会占用文档空间。祖先类的margin会让子类的absolute跟着偏移,而padding却不会让子类的absolute发生偏移。absolute是根据祖先类的border进行的定位。
(absolute)定位对象在可视区域之外会导致滚动条出现。而放置(relative)定位对象在可视区域之外,滚动条不会出现。
Fixed
固定定位
相对当前浏览前窗口
fixed和absolute有很多共同点:
1.会改变行内元素的呈现模式,使display之变更为block。
2.会让元素脱离文档流,不占据空间。
3.默认会覆盖到非定位元素上。
fixed与absolute最大的区别在于:absolute的”根元素“是可以被设置的,而fixed则其”根元素“固定为浏览器窗口。即当你滚动网页,其元素与浏览器窗口之间的距离是恒定不变的。