拖拽盒子随意移动
同时给父元素和需要拖拽的元素进行设置style="position: relative;"
注册指令
export default (app) => {
app.directive("drag", {
mounted(el) {
let dragBox = el;
dragBox.onmousedown = (e) => {
e.preventDefault();
let disX = e.clientX - dragBox.offsetLeft;
let disY = e.clientY - dragBox.offsetTop;
document.onmousemove = (e) => {
e.preventDefault();
let left = e.clientX - disX;
let top = e.clientY - disY;
dragBox.style.left = left + "px";
dragBox.style.top = top + "px";
};
document.onmouseup = (e) => {
e.preventDefault();
document.onmousemove = null;
document.onmouseup = null;
};
};
},
});
};
directives: { drag(el) { let dragBox = el; dragBox.onmousedown = (e) => { // 如果是输入框就返回 if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") { return; } e.preventDefault(); let disX = e.clientX - dragBox.offsetLeft; let disY = e.clientY - dragBox.offsetTop; document.onmousemove = (e) => { e.preventDefault(); let left = e.clientX - disX; let top = e.clientY - disY; dragBox.style.left = left + "px"; dragBox.style.top = top + "px"; }; document.onmouseup = (e) => { e.preventDefault(); document.onmousemove = null; document.onmouseup = null; }; }; }, },

可参考
https://blog.csdn.net/weixin_58032613/article/details/122759818?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.topblog&spm=1001.2101.3001.4242.1&utm_relevant_index=3

浙公网安备 33010602011771号