Vue自定义拖拽指令
2.x定义指令
Vue.directive('drag', {
bind:function (el, binding) {
let oDiv = el;
let self = this;
oDiv.onmousedown = function (e) {
let disX = e.clientX - oDiv.offsetLeft;
let disY = e.clientY - oDiv.offsetTop;
document.onmousemove = function (e) {
let l = e.clientX - disX;
let t = e.clientY - disY;
oDiv.style.left = l + 'px';
oDiv.style.top = t + 'px';
binding.value({x:e.pageX,y:e.pageY}, el)
};
document.onmouseup = function (e) {
document.onmousemove = null;
document.onmouseup = null;
};
};
}
})
3.x自定义指令
import { createApp } from 'vue'
import App from './App.vue'
let app = createApp(App)
app.directive('drag', {
beforeMount (el, binding) {
console.log(el, binding)
let oDiv = el;
oDiv.onmousedown = function (e) {
let disX = e.clientX - oDiv.offsetLeft;
let disY = e.clientY - oDiv.offsetTop;
document.onmousemove = function (e) {
let l = e.clientX - disX;
let t = e.clientY - disY;
oDiv.style.left = l + 'px';
oDiv.style.top = t + 'px';
binding.value({x:e.pageX,y:e.pageY}, el)
};
document.onmouseup = function () {
document.onmousemove = null;
document.onmouseup = null;
};
};
}
})
使用指令
<div v-drag="greet" class="closeBut">
使用拖拽自定义指令
</div>
greet(val, el) {
}