Javascript 将一个可拖动的生长分区居中
我有一个潜水艇,可以被拖拽和缩放。它可能比窗口大,也可能不比窗口大,我正在尝试编写一个函数,当div的宽度或高度发生变化(通过缩放函数)时,该函数将保持它相对于窗口的当前中心居中。为此,我需要将其顶部和左侧(或其边距,但更喜欢顶部和左侧位置)更改为与其当前顶部和左侧位置相关的数字。我只是无法理解函数的逻辑,它将使函数保持在当前位置的中心。要使其完全居中,我只需将其顶部和左侧更改为div大小的(-)一半,但要使其围绕当前中心居中,我该怎么做 根据增加div width/height大小的方式,您可以只更改div的边距以反映大小更改的一小部分。您还可以用类似的方法来更改左/顶绝对值 例如,使用jQuery动画:Javascript 将一个可拖动的生长分区居中,javascript,jquery,draggable,centering,Javascript,Jquery,Draggable,Centering,我有一个潜水艇,可以被拖拽和缩放。它可能比窗口大,也可能不比窗口大,我正在尝试编写一个函数,当div的宽度或高度发生变化(通过缩放函数)时,该函数将保持它相对于窗口的当前中心居中。为此,我需要将其顶部和左侧(或其边距,但更喜欢顶部和左侧位置)更改为与其当前顶部和左侧位置相关的数字。我只是无法理解函数的逻辑,它将使函数保持在当前位置的中心。要使其完全居中,我只需将其顶部和左侧更改为div大小的(-)一半,但要使其围绕当前中心居中,我该怎么做 根据增加div width/height大小的方式,您可
$("#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比屏幕大,并拖动到特定区域(使其一部分位于屏幕中心),然后缩放得更大,我希望将其当前焦点保持在中心。我需要考虑它的抵消。对于地图,用户将地图移动到特定位置,然后放大该位置。