最近在弄到一个html定位的问题,很是头疼,因此在此小记,以便后查.
首先看看HTML中的定位的标准定义:
说明
这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。
可能的值
值 | 描述 |
---|---|
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 属性的值。 |
下面重点说absolute和relative.从上面的定义,我做了如下的测试
代码如下:
1 2 3 45 6 13 14 15 1625 2617 18 192021 22 2324
实际的效果如下:
因此有此结论,所谓的相对,就是当该元素没有设置相对定位以及left(right)和top(bottom)时(即按照文档流的布局所在位置),以left(right)和top(bottom)设定的值相对与该位置进行定位.
关于绝对定位,我们不难从上述定义看出,当所有的祖先都没有指定position属性时(即默认值为static),该元素将根据left(right)和top(bottom)相对与跟元素进行定位.否则按照最近一个position不为static的父元素根据left(right)和top(bottom)进行定位.
原谅我的虎头蛇尾,真的讲完了.