<div style=" background: #ccc; width: 100px;position: relative;clear: both; overflow: hidden; display: inline-block;"> <div style=" z-index: 0; height: 100px; background: #ccc; width: 100px;position: relative; display: inline-block;"> 1 </div> </div> <div style=" height: 100px;height: 100px; background: red; width: 100px;">2</div>
【 position:relative | absolute | static | fixed 】
来源:http://www.chinaz.com/web/2012/1121/282830.shtml
A:相对定位(position: relative):如果对某一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直(或水平)位置(top,right,bottom,left四值),让这个元素"相对于"它的起点进行移动。注:设置为相对定位的元素框会偏移某个距离。元素仍然保持其未定位前的形状,它原本所占的空间仍保留;
B:绝对定位(position: absolute):绝对定位使元素的位置与文档流无关,所以不会占用空间。与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。注:设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框;
C:固定定位(position: fixed):固定定位元素的位置总以视窗左上角定位;注:IE6不兼容此属性;
D:static :没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级;
【定位原理:在文本流中,所有元素的位置都受文本流的限制,但我们可以通过CSS样式去改变这些元素的位置(如:margin,float);其实真正意义上的位移是通过top,right,bottom,left来实现的】
A:position: relative: 被相对定位元素不会脱离文档流,它会参考自身静态位置的左上角,通过 top,right,bottom,left进行位置移动。注:相对定位层原有位置还会继续占用文档流;如下图:
红色区域被相对定位后,相对A点通过top:20px,left:15px进行位移,但相对定位层的原有位置还会继续保留;
B:position:absolute:被绝对定位元素会脱离文档流,且会选取自己最近的父级定位元素,通过 top,right,bottom,left进行位置移动。注:当父级position属性是static时,absolute位移定位置将以body的原点坐标进行计算;如 下图:红色区域被绝对定位后,被定位层脱离文档流;如果A点层是 relative(或 absolute时,即红色区域的父级),被定位层会以A点坐标通过top:20px,left:15px进行位移;当父级没有定位时,文档以body的 原点坐标通过top:20px,left:15px进行位移;