Vue实现简单的拖拽效果


Posted in Javascript onAugust 25, 2020

本文实例为大家分享了Vue实现简单拖拽效果的具体代码,供大家参考,具体内容如下

自定义指令v-drag

l 存在时 只能横向拖拽

t 存在时 只能纵向拖拽

lt都存在时 可以任意方向拖拽

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>拖拽</title>
 <style>
  *{
   margin: 0;
   padding: 0;
  }
  #box{
   background: red;
   width: 100px;
   height: 100px;
   position: absolute;
 
  }
 </style>
 <script src="vue.js"></script>
</head>
<body>
 <div id="app">
  <div id="box" v-drag.l.t="flag"></div>
 </div>
 <script>
  Vue.directive("drag",(el,{modifiers,value})=>{
   let{l,t}=modifiers;
 
 
   el.addEventListener("mousedown",handleDownCb)
 
   let disX,disY;
   function handleDownCb(e){
    disX=e.offsetX;
    disY=e.offsetY;
    // console.log(disX,disY)
    document.addEventListener("mousemove",handleMoveCb);
    document.addEventListener("mouseup",handleUpCb);
   }
 
   function handleMoveCb(e){
    let x=e.clientX-disX;
    let y=e.clientY-disY;
    if((l&&t) && value){
     el.style.left=x+"px";     
     el.style.top=y+"px";
     return;
    }
 
    if(l&&value){
     el.style.left=x+"px";     
     return;
    }
    if(t&&value){
     el.style.top=y+"px";
     return;
    }
   }
 
   function handleUpCb(){
    document.removeEventListener("mousemove",handleMoveCb);
    document.removeEventListener("mouseup",handleUpCb);
   }
 
  })
  let vm=new Vue({
   el:"#app",
   data:{
    flag:true
   }
  })
 </script>
</body>
</html>

注:

改变v-drag.l  v-drag.t  v-drag.l.t  即可实现横向 纵向 任意方向的拖拽

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
jQuery创建DOM元素实例解析
Jan 19 Javascript
JS实现点击按钮后框架内载入不同网页的方法
May 05 Javascript
jquery实现弹出层登录和全屏层注册特效
Aug 28 Javascript
node.js使用cluster实现多进程
Mar 17 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
Webpack性能优化 DLL 用法详解
Aug 10 Javascript
微信小程序实现折叠展开效果
Jul 19 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
Sep 17 Javascript
JS正则表达式封装与使用操作示例
May 15 Javascript
Vue Router的手写实现方法实现
Mar 02 Javascript
Vite和Vue CLI的优劣
Jan 30 Vue.js
浅谈JavaScript节流和防抖函数
Aug 25 #Javascript
JS实现拖动模糊框特效
Aug 25 #Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 #Javascript
JS轮播图的实现方法2
Aug 25 #Javascript
JS轮播图的实现方法
Aug 24 #Javascript
js 函数性能比较方法
Aug 24 #Javascript
JavaScript实现简单验证码
Aug 24 #Javascript
You might like
一个分页的论坛
2006/10/09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
自己的js工具 Event封装
2009/08/21 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
Weblogic的布署方式
2013/08/23 面试题
新东网科技Java笔试题
2012/07/13 面试题
南京迈特望C/C++面试题
2012/07/09 面试题
环境科学专业研究生求职信
2013/10/02 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
环卫工人慰问信
2015/02/15 职场文书
植物园观后感
2015/06/11 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL