vue 拖拽功能
来源:互联网 发布:网络信息 编辑:程序博客网 时间:2024/06/01 08:50
<div id="box">
<br>x:{{val.x}} <br>y:{{val.y}} <div v-drag="greet" id="drag" :style="style"> //注意这里要通过指令绑定函数将当前元素的位置数据传出来 </div>
</div>
//移动端
Vue.directive('drag',//自定义指令 { bind:function (el, binding) { let oDiv = el; //当前元素 let self = this; //上下文 oDiv.ontouchstart = function (e) { //鼠标按下,计算当前元素距离可视区的距离 let disX = e.touches[0].clientX - oDiv.offsetLeft; let disY = e.touches[0].clientY - oDiv.offsetTop; document.ontouchmove = function (e) { //通过事件委托,计算移动的距离 let l = e.touches[0].clientX - disX; let t = e.touches[0].clientY - disY; //移动当前元素 oDiv.style.left = l + 'px'; oDiv.style.top = t + 'px'; //将此时的位置传出去 binding.value({x:e.pageX,y:e.pageY}) }; document.ontouchend = function (e) { document.ontouchmove = null; document.ontouchend = null; }; }; } })
//pc端
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}) };
document.onmouseup = function (e) {
document.onmousemove = null;
document.onmouseup = null; };
};
}
}
);
window.onload = function () {
let vm = new Vue({
el: '#box',
data: {
val: '123',
style: {
width: '100px',
height: '100px',
background: 'aqua',
position: 'absolute',
right: '30px',
top: 0
}
},
methods:{ //接受传来的位置数据,并将数据绑定给data下的val
greet(val){
vm.val = val;
}
} ,
});
}
原文来自https://segmentfault.com/a/1190000009134142
- vue 拖拽功能
- 如何在vue中实现拖拽功能
- vue实现筛选功能
- vue 路由功能
- vue复制功能
- vue拖拽练习
- Vue + Webpack + Vue-loader 功能介绍
- 【Vue】Vue-Router2 实现路由功能
- 用Vue实现排序功能
- vue的强大功能---组件
- vue简单购物车功能
- vue开发:vue实现百度搜索下拉提示功能
- 利用VUE框架,实现列表分页功能
- Vue自定义指令实现checkbox全选功能
- 使用Vue-Router 2实现路由功能
- 使用Vue-Router 2实现路由功能
- vue+element实现批量删除功能
- 使用Vue-Router 2实现路由功能
- nipype处理核磁数据(三)——MATLAB、SPM、ANTs、AFNI的安装
- 统计学学习笔记——(7)抽样分布
- 第一个博客测试
- Unity协程的作用
- 基于HDP2.6.0.3-8的Hadoop TestDFSIO、mrbench和nnbench是三个广泛被使用的测试
- vue 拖拽功能
- 项目打包,postman提交json数据
- UE4_ar项目经验
- 设计模式之单例模式
- zend studio打开右侧方法预览框
- 机器学习第二章模型评估与选择笔记(前篇)
- php 输出错误信息及设置错误级别
- LINUX线程分离
- 统计学习导论 Chapter3--Linear Regression