vue 自定义拖拽指令

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>实例方法</title>
 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
 <meta name="apple-mobile-web-app-capable" content="yes">
 <meta name="apple-mobile-web-app-status-bar-style" content="black">
 <script src="../js/vue1.0.js"></script>
 <script src="../js/vue-resource.js"></script>
 <script>
  //自定义指令
  Vue.directive(‘drag‘,function(){
   var oDiv = this.el;
   oDiv.onmousedown = function(ev){
    var disX = ev.clientX -oDiv.offsetLeft;
    var disY = ev.clientY - oDiv.offsetTop;
    document.onmousemove = function(ev){
     var l = ev.clientX-disX;
     var t = ev.clientY-disY;
     oDiv.style.left = l+‘px‘;
     oDiv.style.top = t+‘px‘;
    };
    document.onmouseup = function(){
     document.onmousemove=null;
     document.onmouseup=null;
    };
   };
  });
  window.onload = function(){
   var vm = new Vue({
    el:‘#box‘,
    data:{}
   });
  }
 </script>
</head>
<body>
<div id="box">
 <div v-drag :style="{width:‘100px‘, height:‘100px‘, background:‘aqua‘, position:‘absolute‘, right:0, top:0}">
 </div>
</div>
</body>
</html>

  自定义键盘 信息

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>自定义键盘信息</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <script src="../js/vue1.0.js"></script>
  <script src="../js/vue-resource.js"></script>
  <script>
    Vue.directive(‘on‘).keyCodes.ctrl=17;
    Vue.directive(‘on‘).keyCodes.myenter=13;
    window.onload = function(){
      var vm = new Vue({
        el:‘#box‘,
        data:{},
        methods:{
          show:function(){
            alert(111);
          }
        }
      });
    }
  </script>
</head>
<body>
<div id="box">
  <input type="text" @keydown.ctrl="show">
  <hr>
  <input type="text" @keydown.myenter="show | debounce 2000">
</div>
</body>
</html>

  

原文地址:https://www.cnblogs.com/duke-peng/p/8872010.html

时间: 2024-08-30 14:53:47

vue 自定义拖拽指令的相关文章

vue的移动app项目中,自定义拖拽指令的问题

使用vue的都知道vue有一个自定义指令,我比较喜欢的就是拖拽的自定义指令,感觉挺方便的! //组件内的拖拽指令 directives: { //组建内自定义指令 drag: { // 指令的定义 bind: function(el, value) { let oDiv = el; //当前元素 let self = this; //上下文 oDiv.ontouchstart = function(e) { //鼠标按下,计算当前元素距离可视区的距离 let disX = e.touches[0

如何使用Vue实现拖拽效果pageY、screenY、clientY、layerY、offsetY(转)

如何使用Vue实现拖拽效果pageY.screenY.clientY.layerY.offsetY 2018年06月28日 17:34:42 唐策 阅读数:377 标签: 如何使用Vue实现拖拽效果pageY.screenY.cli 更多 个人分类: vue-js 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_29132907/article/details/80846652 1.效果图 2.分清clientY pageY screenY

vue卡片拖拽、自动排列交换位置、拖拽数据存取

这是这次系列文章的第一篇,我自己封装了一个用vue实现的拖动卡片组件,并且发布到npm,详细地记录下来了整体制作过程.总共有三篇文章,介绍组件的制作思路和遇到的问题,以及在发布到npm上并下载使用的过程中,发生了什么问题并如何解决. 第一篇为组件封装后的使用文档及介绍 第二篇为组件的实现思路以及遇到的问题 第三篇为将组件打包并上传至npm,如何实现按需加载和下载后使用的问题 这是vue实现的拖动卡片组件,主要实现了: 拖动卡片与其他卡片的位置更换,并且其他卡片根据拖动的位置自动顺移,位置数据实时

自定义拖拽框插件

1.HTML代码如下 注意引入jquery和自定仪的drag.js , 路径正确打开页面就能看到效果 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus?"> <meta name="Author&

vue自定义长按指令

1.前言 在word中,当我们需要删除一大段文本的时候,我们按一下键盘上的退格键,就会删除一个字,当我们长按住退格键时,就会连续不停的删除,这就是键盘按键的长按功能.那么我们也想在网页中让一个按钮也具有"长按"和"单击"不同的功能,该怎样实现呢?下面我们采用vue自定义指令的方式,来实现一个长按指令. 2.原理 长按,即用户按下按钮并持续按住几秒钟,即触发长按功能.那么,要实现这样的功能关键点在于我们需要知道的是用户什么时候按下按钮和什么时候松开按钮.幸运的是:浏览

vue实现拖拽组件

可以拖拽,靠边停靠,效果图如下 代码如下: 注意:代码中使用的图片未上传 DragAndDrop组件: <template> <div class="drag" id="moveDiv" @mousedown="start($event)" @touchstart="start($event)" @mousemove="move($event)" @touchmove="move

vue模块拖拽效果

正巧在之前面试中遇到问实现拖拽效果 当时面试的时候简单回答了实现的方式与逻辑. 现在闲来无事,把这个东西实现了一下. 原理很简单,写的很方便. 数据驱动,建立一个数组,数组初始长度为1 拖动触发时,添加一个对象到数组中,拖动的是下标为0的对象,新建的还在原来位置放着,等待下次拖动. 话不多说,上代码 <template> <div class="view"> <div class="x" @mousedown="move($e

vue 鼠标拖拽vuedraggable

npm run vuedraggable <template> <vuedraggable class="wrapper" v-model="list"> <transition-group> <div v-for="item in list" :key="item" class="item"> <p>{{item}}</p> <

vue自定义拖动指令

1.在项目开发中,需要对div进行拖动.因为需要自定义组件 a>定义全局拖拽指令: 定义全局指令,需要在main.js中写入vue.directive('drag',{});即可.但是一般会在外部新建一个drag.js文件,在js文件内部实现拖拽逻辑,最后在dom代码中调用该指令: (1).新建drag.js文件: import Vue from 'vue'; //使用Vue.directive()定义一个全局指令 //1.参数一:指令的名称,定义时指令前面不需要写v- //2.参数二:是一个对