position的默认值是static,(也就是说对于任意一个元素,如果没有定义它的position属性,那么它的position:static)
absolute是相对于自己最近的父元素来定位的,如果你不给#demo相对定位,那么#sub的绝对定位就是相对于body来定位的.
static: 默认值.无特殊定位,对象遵循HTML定位规则;
absolute: 将对象从文档流中拖出,使用left,right,top,bottom 等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位.如果不存在这样的父对象,则依据body对象.而其层叠通过z-index属性定义;
fixed:未支持.对象定位遵从绝对(absolute)方式.但是要遵守一些规范;
relative:对象不可层叠,但将依据 left,right,top,bottom 等属性在正常文档流中偏移位置;
相对定位,对象遵循正常文档流,但将依据top,right,bottom,left等属性搏敬埋在正常文档流中偏移位置. 位置属性被设置为relative之后,是相对于前面的容器定位的.这个时候不能用top left在定位.应该用margin.它可以随窗口大小变化.但大小仍然不会变.要是你设基蚂置成width:100%;height:100%;这样就会随着稿如窗口变大变小
css中position: relative的意思是:
相对定位,对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置.
位置属性被设置为relative之后拦谈,是相对于前面的容器定位的.这个时候不能用top left在定位.应该用margin.它可以随窗口大小变化.但大小仍然不会变.要是你设置成width:100%;height:100%;这样就会拍衡拿随着窗口变大变小.
当Position属性值为Relative时对象原来占有的位置保留,其后面的对象按原来文档流仍然保持原来的位置Top的值表示对象相对原位置向下偏移的距离bottom的值表示对象相对原位置向上偏移的距离两者同时存在时,只有Top起作用.left的值表示对象相对原位置向右偏移的距离right的值表示对象相对原位置向左偏移的距离两者同时存在时,只有left起作用.
希望以上的回答能够帮到你!