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文字滚动停顿效果代码
Jun 28 Javascript
JQuery 常用操作代码
Mar 14 Javascript
jquery-easyui关闭tab自动切换到前一个tab
Jul 29 Javascript
理解JavaScript中的对象 推荐
Jan 09 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
May 19 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
Apr 20 Javascript
Javascript基础教程之比较null和undefined值
May 16 Javascript
angularjs 表单密码验证自定义指令实现代码
Oct 27 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 Javascript
vue+vant实现购物车全选和反选功能
Nov 17 Vue.js
输入框跟随文字内容适配宽实现示例
Aug 14 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数组函数array_multisort()用法实例分析
2016/04/02 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
js限制文本框只能输入中文的方法
2015/08/11 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
Vue文件配置全局变量的实例
2018/09/06 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
python实现简单socket通信的方法
2016/04/19 Python
python编程实现归并排序
2017/04/14 Python
Python实现的选择排序算法示例
2017/11/29 Python
python如何统计序列中元素
2020/07/31 Python
用python处理MS Word的实例讲解
2018/05/08 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
python3获取url文件大小示例代码
2019/09/18 Python
python flask搭建web应用教程
2019/11/19 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
法人代表授权委托书
2014/04/08 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis