【发布时间】:2014-12-31 23:27:06
【问题描述】:
我尝试搜索此内容,但我看到的大多数答案只是将某些内容放在 div 中。我要做的是单击图像上的某个位置并将我单击的区域居中。
我在“视口”中有一个视口 div 和一个图像 div。(溢出:隐藏)。我能够在第一次似乎可以工作的地方写一些东西,但是当我第二次单击时,它没有得到除非我刷新,否则它是正确的。
HTML:
<div id="viewport">
<div id="garage-layout"></div>
</div>
JavaScript:
$("#garage-layout").click(function (e) {
posX = e.pageX - $(this).offset().left;
posY = e.pageY - $(this).offset().top;
vP = $("#viewport");
vX = e.pageX - vP.offset().left;
vY = e.pageY - vP.offset().top;
vW = (vP.width() / 2) - vX;
vH = (vP.height() / 2) - vY;
console.log("vy:" + vY + " vx:" + vX + " vW:" + vW + "vH" + vH);
$(this).animate({
top: vH,
left: vW
}, 1500);
})
这是我得到的:http://jsfiddle.net/86j20Lsb/1/
非常感谢!!
【问题讨论】:
-
请您再解释一下。
#garage-layout的中心应该正好放在用户点击的地方,对吧? -
所以车库布局将比视口更大。我想要实现的是,如果用户单击该图像上的某个点(在视口内),那么被点击的点将被移动到视口的中心。
-
啊,我刚刚想通了:vW = (vP.width()/2) - posX; vH = (vP.height()/2) - 位置;我减去了错误的东西。