如何计算转换容器内新项目的位置

时间:2015-11-23 07:22:29

标签: javascript jquery css css-transforms

我正在从侧边栏拖动占位符项(相对于窗口)并将其放到pannable / zoomable" stage"它使用CSS转换。

当被删除时,它应该被一个新元素替换,在视觉上说,在完全相同的位置,在平移/缩放"阶段" 中具有绝对定位的新元素。

我很接近,但是当比例为1时,计算的位置才正确,我无法以编程方式计算出如何计算比例。

的jsfiddle: http://jsfiddle.net/a4v2guvt/

如果缩小(鼠标滚轮)并将项目拖到舞台上,则很容易看到问题。

以下是我目前使用的内容:

$(theNewItem).css({
      'top': dropPosition.top + (currentY - (currentY * 2)),
      'left': dropPosition.left + (currentX - (currentX * 2))
    });`

关于代码的说明: dropPosition是被拖动元素(相对于窗口)的$.offset(),此时它被删除"并且currentYcurrentX是转换了我试图添加新元素的容器元素的x,y值,scale(1)相对于窗口可以认为是0,0。

旁注: (currentY - (currentY * 2)是将变换矩阵中使用的负数转换为正数的简洁方法,因为我不知道任何其他转换方式+/-脱离我的头顶。

1 个答案:

答案 0 :(得分:0)

最后想出来了(不要问我怎么做!)

以下是可能遇到此问题的其他任何人的解决方案:

'top': (dropPosition.top - containerPosition.top) / currentScale,
'left': (dropPosition.left - containerPosition.left) / currentScale