<!DOCTYPE html>
<html>
<head>
<style>
body{background-color:white}
.box{
background-color:gray;
width:100px;
height:100px;
color:black;
}
#static{
position:static;
}
#relative{
position:relative;
background-color:yellow;
top:20px;
left:10px;
z-index:1;
}
#absolute{
position:absolute;
background-color:blue;
top:40px;
left:40px;
}
#fixed{
position:fixed;
background-color:red;
top:0;
left:120px;
z-index:-1;
}
</style>
</head>
<body>
<div class="box" id="static">static</div>
<!-- 相对于文档中的原始位置移动,这个懂 -->
<div class="box" id="relative">relative</div>
<!-- 效果看来是相对于原始框body定位,不知道为什么不相对于relative移动,relative不是最近的父元素,还有原始body框也没有规定position的值啊 搞不懂这几个属性值的计算方法 -->
<div class="box" id="absolute">absolute</div>
<div class="box" id="fixed">fixed</div>
</body>
</html>
可以参考这个 http://blog.csdn.net/cyyax/article/details/50607066
最近的有relative的父级元素。不行就继续找‘父级元素’的父级元素
static(静态) 没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级。
relative(相对定位) 对象不可层叠、不脱离文档流,参考自身静态位置通过 TRBL 定位,并且可以通过z-index进行层次分级。
absolute(绝对定位) 脱离文档流,通过TRBL定位. 使用absolute绝对定位时,冒泡最近的带有absolute/relative的父级,如没有则冒泡至body的TRBL为止,可z-index进行层次分级。
fixed(固定定位) 这里所固定的参照对像是可视窗口而并非是body或是父级元素。可通过z-index进行层次分级。
子绝父相,子元素为absolute的话他是由最近那个relative来定往哪里移,怎么算最近呢?就是他的父级,那个最近的有相对定位就以哪个为准。
如果你全部都没有相对定位的话只有绝对定位的话那就是以body为移动的
一般就设置一个relative,然后在这个div里面设置一个absolute,
已解决,另外在这个例子中的absolute是无父级元素的情况,但是这时候移动的参照标准不是body而是html,具体原因我也不知道,是通过测试得知,有哪位大神知道可以告知一下,谢谢