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 相关文章推荐
Jquery从头学起第四讲 jquery入门教程
Aug 01 Javascript
JavaScript中的迭代器和生成器详解
Oct 29 Javascript
JS实现跟随鼠标闪烁转动色块的方法
Feb 26 Javascript
Jquery Mobile 自定义按钮图标
Nov 18 Javascript
JS中setTimeout的巧妙用法前端函数节流
Mar 24 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
react系列从零开始_简单谈谈react
Jul 06 Javascript
javascript 取小数点后几位几种方法总结
Aug 02 Javascript
es6学习之解构时应该注意的点
Aug 29 Javascript
浅析vue深复制
Jan 29 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
Nov 02 Javascript
layui的select联动实现代码
Sep 28 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中的正则表达式以及模式匹配
2013/06/19 PHP
php多文件上传下载示例分享
2014/02/20 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
laravel请求参数校验方法
2019/10/10 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
Python自定义线程类简单示例
2018/03/23 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
校领导推荐信
2013/11/01 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
放牛班的春天观后感
2015/06/01 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android
python程序的组织结构详解
2021/12/06 Python
基于docker安装zabbix的详细教程
2022/06/05 Servers