作为前端的初学者,对css中的position属性总是感觉很晕,找个时间梳理下,并且用我自己的话表达出来,希望能给别的初学者一点点帮助,如果有说错的地方,欢迎指出。
先来个正正经经的定义:
static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。
relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。
absolute:对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。
fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性定义。
文档流: 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。
上面这一堆,反正我看的很头痛。好了,下面开始我的自我讲解。
文档流:可以理解为一个是 在某块庄园 划定的一块地。这块地。种庄稼就只能从上往下一行一行往下种。(div就是庄稼)
static: 默认的定位方式,就是只要新添加了div,就乖乖的按照自上而下的种吧。
relative:顾名思义,相对定位,怎么理解? 官方定义为相对于自身的位置偏移。咋说呢。就相当于,你在块荒郊野岭种庄稼。开始开垦了100m100m的高粱地,觉得美滋滋,然后你老婆说,把这块100100的地方往东挪10米,往北挪十米把。虽然100*100的高粱地挪位了,但是之前开垦的还在对不对,还可以种上玉米。这就叫,相对于自己本身偏移。以前的位置还在,别人不能动。而且你挪了地也会影响邻居的庄稼地划分。这就叫相对自己偏移。
absolute: 绝对定位, 脱离文档流,这个不好理解。就是使用这个属性值之后,哥们觉得在地上种地太没追求,之前在地表层开荒的地也彻底不要了,直接把100*100的地挪到空中。在空中种高粱,脱离文档流。但是相对谁偏移呢? 它相对于自己直系父类的position属性为relative或者absoulte的元素偏移。如果都没有,就相对body偏移。
fixed: 脱离文档流。直接来个截图更链接更直观http://www.bjxdf.com/?bdpz。这种广告。不管怎么滚屏。都在同一个地,给你最温暖的广告。它的位置。就是相对于窗口为原点偏移的。