css中position属性
- static
- relative
- absolute
- fixed
static
没有特殊的定位,遵循正常的文档流,每个元素的position属性默认都是这个。它会占用文档空间,并且定位方法top,right,bottom,right,z-index属性设置的值都无效
relative
进行相对定位,遵循正常的文档流,相对于这个对象在文档流中原来的位置进行偏移,注意:因为它也时占据文档空间的,但是它的top/left/right/bottom属性是生效,而且占据的文档空间不会随 top / right / left / bottom 等属性的偏移而发生变动,也就是说它的同级元素,如果相对于这个元素定位的话,还是看这个元素便宜之前的位置,它的移动不会带动,同级元素的移动,不像margin,当设置了margin后,这个元素的上下左右都会被影响到。
absolute
进行绝对定位,它所定位的元素,是脱离了文档流的,而且这个决定定位,当对于这个元素的父级以上的非static属性的元素,如果这个元素的所有上级都是static修饰的那么,找的就是html,到html也就停止了,而relative是找到body就停止了所以如果当两个统计的元素,一个为relative,一个为absolute,都设置了top:0px;left:0px;那么这两个统计元素是不会在同一个地方的,因为两个元素的“终点”不同,如果需要定位在相同的位置,则需要将absolute定位的元素在原来位置的基础上+8px,即可两个元素重合。
注意:如果被absolute定位的元素,不给定定位属性,则默认还是会以正常文档流的规则布局
fixed
进行固定定位,和absolute一样也是的脱离了文档流,但是它的定位不会跟随者滚动条的移动进行偏移,因为它就是跟随者窗口为原点进行定位的。
总结:
定位方法top,right,bottom,right除了static也就是默认的,其他都是可以调整。
static和relative这两个都是遵循文档流的,也就是占据位置的。
absolute和fixed是脱离文档流的,这两个修饰的元素,移动位置不会影响到其他元素。
absolute的定位必须建立在已经定位好的标签,并且position的值不可以为static,如果不是static则,它的定位就是建立在父级元素的左上角也即是原点的位置进行定位,如果它的所有父级标签都是static的那么就找到终点html,也就是在整个页面的左上角原点的位置进行绝对定位。