drag-and-drop - 通过 CSS-property “transform: scale(0.5)” 缩放的 Angular CDK 拖放无法按预期工作

标签 drag-and-drop angular9

通过 CSS 属性“transform: scale(0.5)”进行缩放的 Angular CDK 拖放无法按预期工作。

如果外部 DIV 由 CSS 属性缩放 “变换:缩放(0.5)”拖动没有与鼠标指针正确对齐。只要比例不等于 1,就会发生这种情况。

这里有一个例子:https://stackblitz.com/edit/angular-2q1mte

我知道这个帖子 Drag and drop with pinch zoom doesn't work as expected因此

“@Input('cdkDragConstrainPosition') constrainPosition: (point: Point, dragRef: DragRef) => Point”.

但是如何编写自定义逻辑以使用指针正确映射拖动?或者是否有任何其他解决方案可以提供缩放功能但保持拖动与鼠标指针正确对齐?

任何帮助表示赞赏

最佳答案

我也遇到了这个问题。
这里的解决方案:初始化一个比例变量并将其用于dragConstrainPoint

  // change position of object while zooming ! (cdk fix)
    dragConstrainPoint = (point, dragRef) => {
      let zoomMoveXDifference = 0; 
      let zoomMoveYDifference = 0; 
      if (this._scale !- 1) {
       zoomMoveXDifference = (1 - this._scale) * dragRef.getFreeDragPosition().x;
       zoomMoveYDifference = (1 - this._scale) * dragRef.getFreeDragPosition().y;
      }
      return {
        x: point.x + zoomMoveXDifference ,
        y: point.y + zoomMoveYDifference
      };

关于drag-and-drop - 通过 CSS-property “transform: scale(0.5)” 缩放的 Angular CDK 拖放无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62176940/

相关文章:

javascript - Angular9:构建有额外的编译步骤

angular - 我需要在 CI 作业中缓存什么以避免每次 ngcc 重新编译?

html - 有条件地将 CSS 类应用于 Angular 组件主机

angular-material - MatCheckbox 没有被 ngcc 正确处理,或者与 Angular Ivy 不兼容

javascript - 是否有任何 HTML CSS 或 JavaScript 点击属性?

angular-material - 动态更改角度 Material Material 主题

javascript - Jquery 拖放元素保留在列表中并创建另一个

Android SDK : cannot add widgets to main. xml 通过拖放

jquery - Html5 拖放 svg 元素

html - 拖放文本文件