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中各种trim的实现详细解析
Dec 10 Javascript
javascript实现博客园页面右下角返回顶部按钮
Feb 22 Javascript
JavaScript iframe数据共享接口实现方法
Jan 06 Javascript
基于jQuery的ajax方法封装
Jul 14 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
Aug 05 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
Sep 01 Javascript
浅谈Node.js 子进程与应用场景
Jan 24 Javascript
JS获取url参数,JS发送json格式的POST请求方法
Mar 29 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
PHP4与PHP5的时间格式问题
2008/02/17 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
js的闭包的一个示例说明
2008/11/18 Javascript
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python 获取et和excel的版本号
2009/04/09 Python
python追加元素到列表的方法
2015/07/28 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
Python常用特殊方法实例总结
2019/03/22 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
Python创建数字列表的示例
2019/11/28 Python
什么是Python中的顺序表
2020/06/02 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
国企干部对照检查材料
2014/08/22 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL