1 回答

TA貢獻1895條經驗 獲得超3個贊
好的,我認為解決方案就在那里:
我所做的是向盒子添加一個屬性(如果你只有一個盒子,你可以只聲明一個全局變量)來存儲盒子的當前位置
const box = document.querySelector('.box');
box.addEventListener('dragstart', dragStart);
box.addEventListener("drag", handleDrag);
box.addEventListener("dragend", dragEnd);
box.currentTransform = 0; // adding this
let startX = 0;
function dragStart(e) {
startX = e.clientX;
console.log(startX);
}
function handleDrag(e) {
const currentX = e.clientX;
box.style.transform = 'translateX(' +
(box.currentTransform + currentX - startX) + // changed that
'px)';
}
function dragEnd(e) {
box.currentTransform += e.clientX - startX // added that
box.style.transform = 'translateX(' + (box.currentTransform) + 'px)'; // changed this
}
.container {
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.box {
width: 250px;
height: 250px;
background-color: tomato;
}
<div class="container">
<div class="box" draggable="true"></div>
</div>
現在它似乎工作得很好
添加回答
舉報