定位问题是最让新手(比如我。。)头疼的问题之一,如果懒得看分析直接翻到最后 直接说如何用。
我们知道定位分为相对和绝对
position的属性值其实一共有五个:
absolute生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
fixed生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
relative生成相对定位的元素,相对于其正常位置进行定位。
因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。inherit规定应该从父元素继承 position 属性的值。对于新手来说这个属性值的说明让人脑壳疼,实际用的时候也有各种各样的问题,在这我们分析一下这些说明是啥意思
从简单的开始:
默认值static就是出现在正常位置,没有定位,这个没啥问题inherit感觉并不常用,继承父元素的position属性值,它外边的父亲元素啥样它也啥样relative就是相对它本身的正常位置定位fixed如同说明,相对浏览器定位,其实这个才是我们所理解的“绝对定位”,我们经常用absolute来当作fixed使用,而实际上absolute有别的规则.absolute并不一定相对于浏览器,细读说明:相对于 static 定位以外的第一个父元素比如div里有一个span,
<div> <span></span></div>span的absolute设置成absolute时相对于谁定位并不一定,要看div的position属性值是不是static(默认是),
如果不是则span相对于div定位,如果是要继续向上找父元素,直到找到一个position属性值不是static的元素,
span就以它为基准定位。
所以,如果想相对于父元素定位 我们要做的是:
给子元素position:absolute;给父元素position:relative;上面的例子就是给div 写position:relative; 给span写position:absolute;
如果想相对浏览器定位:
直接给元素写position:fixed;
题外话,positionbadm是很流氓,不管三七二十一直接强制定位,实际上并不推荐经常使用,使用float和margin-top(left......)和其他的一些位置调整就能达到理想的效果,如果实在不行再考虑使用position,算是我们的杀手锏。
这就是我所理解的position的意思,如有错误敬请指出