gpt4 book ai didi

javascript - 拖放到缩放的容器上

转载 作者:行者123 更新时间:2023-12-02 21:35:04 25 4
gpt4 key购买 nike

我是 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);
};

最佳答案

如果您尝试放入容器 A 中的对象在将鼠标悬停在目标容器上时会缩放到与其目标容器相同的变换属性,该怎么办? (在你放下它之前)

关于javascript - 拖放到缩放的容器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60520159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com