假设我们有两个 div,一个内部 div 和另一个外部 div。
内部 div 负责缩放和平移(使用 css 变换、平移和缩放完成)。
现在可以通过拖放将新的 div 添加到内部 div 中。放置事件被outerdiv
接受
现在,在放置事件期间,您可以获得 clientx、clienty 位置,现在使用它找到相对于内部 div 的正确放置位置。
这是一个可能的解决方案(但是缩放时最终位置有偏移)
handleDrop = (e) => { const canvasContainerRect = outerDivBoundingRect() // const canvasRect = innerDivBoundingRect() let finalPosition = { x: (e.clientX - canvasContainerRect.left - translateX) / zoom, y: (e.clientY - canvasContainerRect.top - translateY) / zoom, } console.log("final: ", finalPosition) }