自己写的拖拽指令,虽然代码不是很好,留着以后用,万一遇到了就不用重新写了 哈哈
export default {
// 渲染绑定
bind(el, binding) {
// 弹窗的容器
const domDrag = el;
// 绑定头部可以拖动
const headDom = el.querySelector('.dialog-header')
// 因为本项目用在3840*1080大屏上面 弹窗的所在位置写死了 根据个人项目自己调整
// binding.value.width binding.value.height 这是设置的弹窗大小
domDrag.style.left = domDrag.style.left != '0px' ? domDrag.style.left : (3840 - binding.value.width) / 2 + 'px';
domDrag.style.top = domDrag.style.top != '0px' ? domDrag.style.top : (1200 - binding.value.height) / 2 + 'px';
// 鼠标按下,开始拖拽
headDom.onmousedown = (e) => {
domDrag.style.cursor = 'move'// 改变光标形状
let clientX = e.clientX;
let clientY = e.clientY;
let disX = e.clientX - e.offsetX;
let disY = e.clientY - e.offsetY;
document.onmousemove = function (e) {
let x = e.clientX - clientX;
let y = e.clientY - clientY;
if ($(domDrag)[0].offsetLeft + x < 20) {
return
}
domDrag.style.left = $(domDrag)[0].offsetLeft + x + 'px';
clientX = e.clientX;
if ($(domDrag)[0].offsetTop + y < 20) {
return;
}
domDrag.style.top = $(domDrag)[0].offsetTop + y + 'px';
clientY = e.clientY;
}
document.onmouseup = function (e) {
domDrag.style.cursor = ''// 改变光标形状
document.onmousemove = null;
document.onmouseup = null;
}
}
}
}