1.在drag.js中寫上如下代碼(使用的話直接復制即可):
import Vue from 'vue';
//使用Vue.directive()定義一個全局指令
//1.參數一:指令的名稱,定義時指令前面不需要寫v-
//2.參數二:是一個對象,該對象中有相關的操作函數
//3.在調用的時候必須寫v-
const drag = Vue.directive('drag', {
//1.指令綁定到元素上回立刻執行bind函數,只執行一次
//2.每個函數中第一個參數永遠是el,表示綁定指令的元素,el參數是原生js對象
//3.通過el.focus()是無法獲取焦點的,因為只有插入DOM后才生效
bind: function (el) { },
//inserted表示一個元素,插入到DOM中會執行inserted函數,只觸發一次
inserted: function (el) {
el.onmousedown = function (e) {
var disx = e.pageX - el.offsetLeft;
var disy = e.pageY - el.offsetTop;
document.onmousemove = function (e) {
el.style.left = e.pageX - disx + 'px';
el.style.top = e.pageY - disy + 'px';
}
document.onmouseup = function () {
document.onmousemove = document.onmouseup = null;
}
}
},
//當VNode更新的時候會執行updated,可以觸發多次
updated: function (el) { }
})
export default drag;
2.在main.js中引入該指令:
import "./utils/drag"
3.在需要實現拖拽的div中,加入指令:v-drag
