<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>absolute样式</title>
<style type="text/css">
#on{
width: 600px;
height: 600px;
border: 2px solid red;
position: absolute;
left: 400px;
top:10px;
}
.div2{
width: 300px;
height: 300px;
position: absolute;
left: 60px;
border: 2px solid red;
}
</style>
</head>
<body>
<body>
<div id="on">
<div class="div2"></div><span>偏移前的位置还保留不动,覆盖不了前面的div没有偏移前的位置</span>
</div>
</body>
</body>
</html>
relative是相对定位 相对的是自己以前的位置,相对于自己以前位置的左上角为原点开始移动,left是现在位置距自己以前位置的左边的距离(有点拗口,语言组织能力太差将就看吧)。。 top是现在位置距自己以前位置的上边的距离,记住是以以前位置左上角为原点的哦。
absolute是绝对定位 是以父级左上角为原点开始移动,没有父级就是<body>浏览器页面了,left是距父级左边的距离 top是距父级上边的距离,记住是以父级左上角为原点的哦。
题主所说的会往上移动也是这个道理,相对移动是相对span标签原来的位置,原来的位置在div的下面本身原点就很低,而绝对移动是相对于父级标签的,题主问题中的父级标签是body,就是浏览器页面,绝对移动是以浏览器页面左上角来移动的,原点高,所以移动完后也高。
因为绝对浮动 是断绝关系的孩子 再也不会回来的了 所以家里就没有给他留位置了
relative 本身不会对页面造成什么影响,他是只给absolute作参考,absolute的位置会相对于离他最近的一个有relative的标签