position的四个属性值:浏览器
为了便于理解,首先建立对应的divspa
<div class="main"> <div class="top"></div> <div class="bottom"></div> </div>
1. relative
首先咱们要搞清它是相对哪一个对象来进行偏移的。relative是指向它自己的位置。在上面的代码中,top和bottm是同级关系,若是设定top一个relative属性,好比设置以下CSS代码:code
.top { position: relative; padding: 5px; top: 5px; left: 5px; }
当设置sub1为的position为relative后,将根据top,right,bottom,left的值按照它理应所在的位置进行偏移,relative的“相对的”意思也正体现于此。对象
对于此,您只须要记住,sub1若是不设置relative时它应该在哪里,一旦设置后就按照它理应在的位置进行偏移。
随后的问题是,sub2的位置又在哪里呢?答案是它原来在哪里,如今就在哪里,它的位置不会由于sub1增长了position的属性而发生改变。
若是此时把sub2的position也设置为relative,会发生什么现象?此时依然和sub1同样,按照它原来应有的位置进行偏移。blog
2. absolute
当top的position设置为absolute后,其到底以谁为对象进行偏移呢?这里分为两种状况:
(1)当top的父对象main也设置了position属性,且position的属性值为absolute或者relative时,此时top以main为定位对象来进行定位。
注意,对象虽然肯定好了,但有些细节须要注意,那就是咱们到底以main的哪一个定位点来进行定位呢?若是main设定了margin,border,padding等属性,那么这个定位点将忽略padding,将会从padding开始的地方(即只从padding的左上角开始)进行定位,这与咱们会想固然的觉得会以margin的左上端开始定位的想法是不一样的。文档
(2)若是top不存在一个有着position属性的父对象,那么那就会以body为定位对象,按照浏览器的窗口进行定位,这个比较容易理解。it
3. fixed
fixed老是以body为定位对象的,按照浏览器的窗口进行定位,常常用于广告位。io
4. static
position的默认值,通常不设置position属性时,会按照正常的文档流进行排列。class