css中position定位的一些理解

网页布局中常用定位,而定位很多时候总是和浮动与文档流等内容交织在一起,灵活使用定位与文档流的各种特性可以营造除不同的效果。

No0.元素有所谓块级和内联(行内)以及行内块的分别,但这只是对于元素默认表现形式的一种约定,通过display样式可以让元素的表现形式随意变化。块级元素能够变成行内块,行内元素也可以变成块级。

No1.无论什么类型的元素,当设置position属性设为absolute的时候,都会自动变成块级元素。

No2.absolute称之为绝对定位,会让自己脱离当前的文档流,然后去寻找上级节点中某一个带着定位属性的父节点,以这个父节点做定位。

No2.1.定位的原点为元素的左上角。

No3.所谓脱离文档流的意思,通俗的讲就是这个块级元素原本所占用的位置现在不占了。

No4.HTML里面元素排列的习惯是什么样的呢?只要前面没东西了,就尽量往前面移动。例如左面没有东西就往左贴,上面没东西就尽量往上面走。

No5.结合3和4的特点,当一个元素脱离了文档流之后,位于其后面的元素将马上移动,占据原本被该元素所占据的位置。

No6.最后一点,html中的元素并不是平面上的,只不过受文档流限制被约束在了平面上,当文档流被打破,结界不复存在的时候,这些邪恶的元素们就要开始搞大新闻了。他们在垂直方向的排列按理说应该是个随机的过程,谁踩着谁就看浏览器了。

NoXXXXX.真的是最后一点,如果想人为修改通常理解中的覆盖关系,请在css中加入z-index:[num],例如

1
2
3
4
div{
display:absolute;
z-index:1;
}

这个num可以是负数,数值越大层的位置就越高,会覆盖掉数值小的层。