我试图放置一个元素,“内部”,使用绝对定位冲洗另一个div的右上角,“外部”。 “内部”元素不是“外部”的孩子。因此,我需要使用js查找“外部”的定位并使用它。
然而,它并不是很正确:
编辑:我不可能重置body div的margin / padding / relative。身体内还有其他元素。
#wrapper{background:red;
width:100px;
height:100px;}
#inner{
position:absolute;
background:green;
width:50px;
height:100px;
margin:0;padding:0;
}
#body{position:relative;}
<div id = "body">
<div id = "wrapper"></div>
<div id = "inner"></div>
</div>
var rect = document.getElementById("wrapper").getBoundingClientRect();
$("#inner").css({ 'top': String($(window).scrollTop()+rect.top)+"px" });
width_inner = $("#inner").width();
$("#inner").css({ 'left': String($(window).scrollLeft()+rect.right-width_inner)+"px" });
答案 0 :(得分:2)
这是你想要的吗?
var rect = $('#wrapper');
$("#inner").css({ 'top': rect.position().top+"px" });
$("#inner").css({ 'left': (rect.position().left + rect.width() - $('#inner').width())+"px" });
如果您需要担心填充/边框,可以使用:
答案 1 :(得分:2)
在body元素上设置margin和padding。
body{
margin: 0;
padding: 0;
}
或者如果身体没有特定原因:相对;删除它。
建议使用第二个。
答案 2 :(得分:1)
答案 3 :(得分:1)
您应该删除身体标记处的相对位置。
$(document).ready(function() {
$('#inner').css({
'position': 'absolute',
'top': $('#wrapper').offset().top,
'left': $('#wrapper').offset().left + $('#wrapper').width() - $('#inner').width()
});
});
DEMO: