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 相关文章推荐
JavaScript实现Sleep函数的代码
Mar 04 Javascript
JavaScript的parseInt 取整使用
May 09 Javascript
php对mongodb的扩展(初识如故)
Nov 11 Javascript
Node.js+Express配置入门教程详解
May 19 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 Javascript
关于Javascript中defer和async的区别总结
Sep 20 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
Nov 22 Javascript
简单实现bootstrap导航效果
Feb 07 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 Javascript
Vue修改mint-ui默认样式的方法
Feb 03 Javascript
在Vue组件中使用 TypeScript的方法
Feb 28 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 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中实现图片的锐化
2006/10/09 PHP
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
第十四节--命名空间
2006/11/16 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
Python基于Tkinter实现的记事本实例
2015/06/17 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
PHP面试题及答案一
2012/06/18 面试题
毕业生求职推荐信
2013/11/04 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
网络技术专业求职信
2014/05/02 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
一年级小学生评语大全
2014/12/25 职场文书
长江三峡导游词
2015/01/31 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python