在经过缩放的容器上拖放

问题描述 投票:0回答:1

我是React的新手。我正在做一个项目,其功能之一是拖放

应该将可拖动的组件拖放到容器上,例如A.container,A还具有放大和缩小的功能。

我已通过相应地更改其比例以实现放大和缩小来实现此功能。为了实现放大,我将原始比例1乘以2。要实现缩小,我将当前比例除以2。

仅当缩放比例设置为原始时,放置的组件才会放置在正确的鼠标位置。但是,当比例尺具有一些不同的值时。显示放置的组件距离鼠标位置很远。

我如何在所有其他比例上获得正确的滴度。

下面是我的功能代码。

将不胜感激

zoomIn = e => {
  if (this.state.scale == null) {
    this.setState({ scale: 1 });
  }
  this.setState({ scale: this.state.scale * 2 });
  console.log(this.state.scale);
  e.target.style.transform = `scale(${this.state.scale})`;
  e.target.style.transformOrigin = "-0% -0%";
  console.log(this.state.scale);
  out = 0;
  console.log(e.target.style.transform);
  console.log(e.clientX);
  var dragtarget1 = document.getElementById("dragtarget1");
  console.log(dragtarget1.style.left);
  console.log(e.target.getBoundingClientRect().offsetX);
};
zoomOut = e => {
  this.setState({ scale: this.state.scale / 2 });
  console.log(this.state.scale);
  if (this.state.scale === 2.5) {
    e.target.style.transform = `scale(${(this.state.scale = null)})`;
    out = 1;
    this.cood();
  } else {
    out = 0;
  }
  console.log(this.state.scale);
  e.target.style.transform = `scale(${this.state.scale})`;
  e.target.style.transformOrigin = "-0%,-0%";
};
drop = event => {
  event.preventDefault();
  var data = document.getElementById(event.dataTransfer.getData("Text"));
  event.target.appendChild(data);
  data.style.position = "fixed";
  data.style.left = (event.clientX - data.clientWidth / 2) / 2 + "px";
  data.style.top = (event.clientY - data.clientHeight / 2) / 2 + "px";

  //console.log(event.target.getBoundingClientRect())
  console.log(event);
  var dragtarget1 = document.getElementById("dragtarget1");
  setTimeout(function() {
    dragtarget1.classList.remove("hide");
  });
  var dragtarget2 = document.getElementById("dragtarget2");
  setTimeout(function() {
    dragtarget2.classList.remove("hide");
  });
  console.log(data.style.left);
};

我是React的新手。我正在一个项目中,其功能之一是拖放。可拖动组件应该在容器上拖放,例如A.container,A ...

javascript reactjs drag-and-drop scale
1个回答
1
投票

如果将要拖放到容器A中的对象缩放到与其目标容器相同的变换属性,将其缩放到目标容器上怎么办? (在放下之前

© www.soinside.com 2019 - 2024. All rights reserved.