我正在尝试将id为'absPos'的div放在相对于其父div的绝对位置。但它不起作用,div位于页面的左上角。
我的代码示例如下
<html>
<body>
<div style="padding-left: 50px;">
<div style="height: 100px">
Some contents
<div>
<div style="height: 80px; padding-left: 20px;">
<div id="absPos" style="padding: 10px; position: absolute; left: 0px; top: 0px; background-color: red;"></div>
Some text
</div>
</div>
</body>
</html>
你能帮我解决这个问题吗? 在我的实际情况下,而不是红色背景颜色我要放置背景图像。
此致
答案 0 :(得分:36)
具有绝对定位的元素位于offsetParent
,即最近的祖先also positioned。在您的代码中,没有祖先是“定位”元素,因此div从body元素偏移,即offsetParent
。
解决方案是将position:relative
应用于父div,这会强制它成为定位元素,而子offsetParent
。
<html>
<body>
<div style="padding-left: 50px;">
<div style="height: 100px">
Some contents
<div>
<div style="height: 80px; padding-left: 20px; position: relative;">
<div id="absPos" style="padding: 10px; position: absolute; left: 0px; top: 0px; background-color: red;"></div>
Some text
</div>
</div>
</body>
</html>
答案 1 :(得分:6)
如果要放置具有绝对位置的元素,则需要基本元素的位置值不是默认值。
如果您将父div的位置值更改为“relative”,则可以解决问题。
答案 2 :(得分:3)
您需要声明父div position: relative
或position: absolute
本身。
relative
就是你在这种情况下所寻求的。
答案 3 :(得分:2)
您需要先提供父div relative
位置:
<div style="height: 80px; padding-left: 20px; position:relative;">
答案 4 :(得分:1)
您也可以将位置:绝对值应用于父级。总代码低于
<html>
<body>
<div style="padding-left: 50px;">
<div style="height: 100px">
Some contents
<div>
<div style="height: 80px;position:absolute; padding-left: 20px;">
<div id="absPos" style="padding: 10px; position: absolute; left: 0px; top: 0px; background-color: red;"></div>
Some text
</div>
</div>
</body>
</html>
答案 5 :(得分:0)
如果像我一样,你试图将一个元素放在另一个元素上,那么浮动元素需要在另一个元素内部,而不是兄弟姐妹。现在你的position:absolute;
可以正常工作了!