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 相关文章推荐
基于KMP算法JavaScript的实现方法分析
May 03 Javascript
js中cookie的添加、取值、删除示例代码
Oct 21 Javascript
js中replace的用法总结
Dec 27 Javascript
js数组的操作指南
Dec 28 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
Mar 27 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
jquery实现图片轮播器
May 23 jQuery
Vue实现textarea固定输入行数与添加下划线样式的思路详解
Jun 28 Javascript
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
Nov 21 Javascript
Vue js with语句原理及用法解析
Sep 03 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
PHP访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
PHP之短标签开启设置
2013/06/17 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
详解python3中tkinter知识点
2018/06/21 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
python numpy 按行归一化的实例
2019/01/21 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
python 如何调用 dubbo 接口
2020/09/24 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
英智兴达软件测试笔试题
2016/10/12 面试题
六年级数学教学反思
2014/02/03 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
大学迎新生标语
2014/10/06 职场文书
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server