position的用法与心得

position的四个属性值:

  1. relative
  2. absolute
  3. fixed
  4. static

为了便于理解,首先创建对应的div

<div class="main">
    <div class="top"></div>
    <div class="bottom"></div>
</div>

1. relative

首先我们要搞清它是相对哪个对象来进行偏移的。relative是指向它本身的位置。在上面的代码中,top和bottm是同级关系,如果设定top一个relative属性,比如设置如下CSS代码:

.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一样,按照它原来应有的位置进行偏移。

 


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为定位对象,按照浏览器的窗口进行定位,这个比较容易理解。


3. fixed

fixed总是以body为定位对象的,按照浏览器的窗口进行定位,经常用于广告位。


4. static

position的默认值,一般不设置position属性时,会按照正常的文档流进行排列。

原文地址:https://www.cnblogs.com/pengjunhao/p/6927285.html