<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.box{
width: 100px;
height: 100px;
position: absolute;
background: red;
}
</style>
</head>
<body>
<div id="app">
<div v-drag class="box"></div>
</div>
<script src="vue.js"></script>
<script type="text/javascript">
let vm = new Vue({
el:'#app',
directives:{
drag(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(e){
document.onmouseup = document.onmousemove = null
}
e.preventDefault();
}
}
},
})
</script>
</body>
</html>