Javascript 将一个可拖动的生长分区居中

Javascript 将一个可拖动的生长分区居中,javascript,jquery,draggable,centering,Javascript,Jquery,Draggable,Centering,我有一个潜水艇,可以被拖拽和缩放。它可能比窗口大,也可能不比窗口大,我正在尝试编写一个函数,当div的宽度或高度发生变化(通过缩放函数)时,该函数将保持它相对于窗口的当前中心居中。为此,我需要将其顶部和左侧(或其边距,但更喜欢顶部和左侧位置)更改为与其当前顶部和左侧位置相关的数字。我只是无法理解函数的逻辑,它将使函数保持在当前位置的中心。要使其完全居中,我只需将其顶部和左侧更改为div大小的(-)一半,但要使其围绕当前中心居中,我该怎么做 根据增加div width/height大小的方式,您可

我有一个潜水艇,可以被拖拽和缩放。它可能比窗口大,也可能不比窗口大,我正在尝试编写一个函数,当div的宽度或高度发生变化(通过缩放函数)时,该函数将保持它相对于窗口的当前中心居中。为此,我需要将其顶部和左侧(或其边距,但更喜欢顶部和左侧位置)更改为与其当前顶部和左侧位置相关的数字。我只是无法理解函数的逻辑,它将使函数保持在当前位置的中心。要使其完全居中,我只需将其顶部和左侧更改为div大小的(-)一半,但要使其围绕当前中心居中,我该怎么做

根据增加div width/height大小的方式,您可以只更改div的边距以反映大小更改的一小部分。您还可以用类似的方法来更改左/顶绝对值

例如,使用jQuery动画:

$("#draggable").animate({
    height: '+=60',
    width: '+=60',
    marginLeft: '-=30',
    marginTop: '-=30'
},1000);
示例:


是在朋友的帮助下得到的

function changeZoom(amount)
{   
    var oldWidth = $('#zoom').width(), oldHeight = $('#zoom').height();
    if(oldWidth == amount){return false}
    var xPercent = (($('#viewer').width() / 2) + Math.abs($('#zoom').position().left)) / oldWidth,
    yPercent = (($('#viewer').height() / 2) + Math.abs($('#zoom').position().top)) / oldHeight;

    var newLeft = (amount * xPercent) - ($('#viewer').width() / 2),
    newTop = (amount * yPercent) - ($('#viewer').height() / 2);

    newLeft = 0 - newLeft;
    newTop = 0 - newTop;

}

您只是在寻找用于居中的数学
left=(屏幕宽度/2)-(div宽度/2),top=(屏幕高度/2)-(div高度/2)
如果这不是您想要的,请尝试在您的问题中澄清。您好,谢谢您的输入,我将尝试更好地解释我的需要。如果div比屏幕大,并拖动到特定区域(使其一部分位于屏幕中心),然后缩放得更大,我希望将其当前焦点保持在中心。我需要考虑它的抵消。对于地图,用户将地图移动到特定位置,然后放大该位置。