【发布时间】:2017-11-14 10:10:47
【问题描述】:
$( document ).ready(function() {
$('body').append('<div id="tester2"></div>');
$('#tester2').css({
position:'absolute',
background:'blue',
width: 10,
height:10
});
setInterval(function(){
var x = $('#tester')[0].getBoundingClientRect();
$('#tester-pos').text('top: ' + x.top + ', left:' + x.left);
$('#tester2').css({
top:x.top,
left:x.left
});
}, 1000);
$('#jquery-version').text('jquery version: ' + $.fn.jquery);
});
#tester{
position:absolute;
top:50px;
left:50px;
width:10px;
height:10px;
background:red;
}
#page{
min-height:200px;
}
body{
border:2px solid green;
transform: scale(1) translate(20px, 40px);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="tester">
</div>
<div id="page">
getBoundingClientRect on red tester returned:
<span id="tester-pos"></span>
<div id="jquery-version"></div>
</div>
我需要在现有的div 上放置一个div。现有的div 包含在具有 CSS 转换属性集的 HTML 文档的正文中。我需要在文档渲染和转换后放置新的div。
当我在需要隐藏的div 上调用getBoundingClientRect() 时(附加小提琴中的红色方块),我得到错误的顶部/左侧。我将蓝色方块的顶部/左侧设置为getBoundingClientRect() 的输出,它们不重叠。
setInterval(function(){
var x = $('#tester')[0].getBoundingClientRect();
$('#tester-pos').text('top: ' + x.top + ', left:' + x.left);
$('#tester2').css({
top:x.top,
left:x.left
});
}, 1000);
如何解决?
【问题讨论】:
-
您不能将转换添加到 x.top 和 x.left 吗?所以 (x.top + 20) 和 (x.left +40)
标签: javascript jquery getboundingclientrect