定位一直是WEB标准应用中的难点如果理不清楚定位那么可能应实现的效果实现不了实现了的效果可能会走样。如果理清了定位的原理那定位会让网页实现的更加完美。
定位的定义
在CSS中关于定位的内容是position:relative | absolute | static | fixed
static 没有特别的设定遵循基本的定位规定不能通过z-index进行层次分级。
relative 不脱离文档流参考自身静态位置通过 top,bottom,left,right 定位并且可以通过z-index进行层次分级。
absolute 脱离文档流通过 top,bottom,left,right 定位。选取其最近的父级定位元素当父级 position 为 static 时absolute元素将以body坐标原点进行定位可以通过z-index进行层次分级。
fixed 固定定位这里他所固定的对像是可视窗口而并非是body或是父级元素。可通过z-index进行层次分级。
CSS中定位的层叠分级z-index: auto | namber;
auto 遵从其父对象的定位
namber 无单位的整数值。可为负数
定位的原理
可以位移的元素 相对定位
在本文流中任何一个元素都被文本流所限制了自身的位置但是通过CSS我们依然使得这些元素可以改变自己的位置我们可以通过float来让元素浮动我们也可以通过margin来让元素产生位置移动。但是事实上那并非是真实的位移因为那只是通过加大margin值来实现的障眼法。而真正意义上的位移是通过top,right,bottom,left下称TRBLTRBL可以折分使用。针对一个相对定位的元素所产生的。我们看下面的图
我们看图中是一个宽度为200px高度为50pxmargin:25px; border:25px solid #333; padding:25px; 相对定位的元素并且位移距上50px距左50px。而下方是一块默认定位的黑色区块。我们看到这个处在文本流的区块被上面的相对定位挡住了一部分这说明“当元素被设置相对定位或是绝对定位后将自动产生层叠他们的层叠级别自然的高于文本流”。除非设置其z-index值为负值但是在Firefox等浏览器中z-index为负值时将不会显示。并且我们发现当相对定位元素进行位移后表现内容已经脱离了文本流只是在本文流中还为原来的相对定位留下了原有的总宽与总高内容的高度或是宽度加上marginorderpadding的数值。这说明在相对定位中虽然表现区脱离了原来的文本流但是在文本流中还还有此相对定位的老