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 相关文章推荐
js 纯数字不重复排列的另类方法
Jul 17 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
May 05 Javascript
浅谈javascript原型链与继承
Jul 13 Javascript
JavaScript的设计模式经典之代理模式
Feb 24 Javascript
Bootstrap每天必学之标签页(Tab)插件
Aug 09 Javascript
js+html5实现复制文字按钮
Jul 15 Javascript
使用webpack-dev-server处理跨域请求的方法
Apr 18 Javascript
Node.js Buffer用法解读
May 18 Javascript
vue项目刷新当前页面的三种方法
Dec 04 Javascript
微信小程序与后台PHP交互的方法实例分析
Dec 10 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
Oct 13 Javascript
微信小程序实现点击导航条切换页面
Nov 19 Javascript
浅谈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
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
jQuery实现评论模块
2020/08/19 jQuery
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
Python 中的lambda函数介绍
2018/10/10 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
个人素质的自我评价分享
2013/12/16 职场文书
优秀学生事迹材料
2014/02/08 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers