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 加上最后自己的验证
Nov 04 Javascript
JavaScript 对象的属性和方法4种不同的类型
Mar 19 Javascript
Jquery.addClass始终无效原因分析
Sep 08 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
JavaScript结合AJAX_stream实现流式显示
Jan 08 Javascript
Jquery 实现图片轮换
Jan 28 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
Jan 28 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
javascript cookie的基本操作(添加和删除)
Jul 24 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 Javascript
jQuery滑动效果实现方法分析
Sep 05 jQuery
vue与iframe之间的信息交互的实现
Apr 08 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
IStream与TStream之间的相互转换
2008/08/01 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
预备党员党校学习自我评价分享
2013/11/12 职场文书
土木工程专业个人求职信
2013/12/30 职场文书
中专生职业生涯规划书范文
2014/01/10 职场文书
小学数学教学反思
2014/02/02 职场文书
五年级学生评语大全
2014/12/26 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
使用Pytorch训练two-head网络的操作
2021/05/28 Python
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js