Vue实现开关按钮拖拽效果


Posted in Javascript onSeptember 22, 2020

本文实例为大家分享了Vue实现开关按钮拖拽效果的具体代码,供大家参考,具体内容如下

css:

<style>
  .box {
    position: absolute;
    left: 100px;
    top: 100px;
    width: 100px;
    height: 100px;
    background: red;
  }
  .box2 {
    position: absolute;
    left: 400px;
    top: 100px;
    width: 100px;
    height: 100px;
    background: green;
  }
</style>

html:

<div id="app">

  <div class="box" v-drag="isDrag"></div>

  <div class="box2" v-drag:fn.limit.b="isDrag"></div>

  <button @click="isDrag = !isDrag">{{isDrag}}</button>

</div>

js:

<script src="vue.js"></script>
<script>

  // 组件
  Vue.directive('drag', {
    bind(el, {value, arg, modifiers}) {
      console.log(value, arg, modifiers)
      el._value = value;
      el._isDrag = false;
      el.addEventListener('mousedown', function(e) {

        if (!el._value) return;

        el._isDrag = true;
        el._x = e.clientX - el.offsetLeft;
        el._y = e.clientY - el.offsetTop;

        e.preventDefault();
      });
      document.addEventListener('mousemove', function(e) {
        if (el._isDrag) {
          let l = e.clientX - el._x;
          let t = e.clientY - el._y;

          if (modifiers.limit) {
            if (l < 0) {
              l = 0;
            }
            if (t < 0) {
              t = 0;
            }
          }

          el.style.left = l + 'px';
          el.style.top = t + 'px';
        }
      });
      document.addEventListener('mouseup', function(e) {
        el._isDrag = false;
      });
    },

    componentUpdated(el, {value}) {
      console.log('更新了', value);
      el._value = value;
    }
  });

  let app = new Vue({
    el: '#app',
    data: {
      isDrag: false
    }
  });


</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 字符编码规则
May 04 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
Apr 01 Javascript
jQuery Form 页面表单提交的小例子
Nov 15 Javascript
jQuery通过扩展实现抖动效果的方法
Mar 11 Javascript
jQuery使用addClass()方法给元素添加多个class样式
Mar 26 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
Sep 14 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
Nov 07 Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 Javascript
web.js.字符串与正则表达式操作
May 13 Javascript
微信小程序仿知乎实现评论留言功能
Nov 28 Javascript
Vue实现日历小插件
Jun 26 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
Oct 17 Javascript
JS如何生成动态列表
Sep 22 #Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
Sep 22 #Javascript
解决Can't find variable: SockJS vue项目的问题
Sep 22 #Javascript
解决vue-router 嵌套路由没反应的问题
Sep 22 #Javascript
Js跳出两级循环方法代码实例
Sep 22 #Javascript
vue 二维码长按保存和复制内容操作
Sep 22 #Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
Sep 22 #Javascript
You might like
php更新修改excel中的内容实例代码
2014/02/26 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
python调用java的jar包方法
2018/12/15 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
党校学习自我鉴定
2014/02/24 职场文书
家教广告词
2014/03/19 职场文书
个人自荐材料
2014/05/23 职场文书
生物学专业求职信
2014/07/23 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS