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 相关文章推荐
xheditor与validate插件冲突的解决方案
Apr 15 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
Sep 10 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
Oct 23 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
Apr 12 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
Jan 22 Javascript
js实现简单的验证码
Dec 25 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
Dec 15 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
Nov 28 Javascript
JQuery插件tablesorter表格排序实现过程解析
May 28 jQuery
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中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP中文编码小技巧
2014/12/25 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
JavaScript事件列表解说
2006/12/22 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
基于python中的TCP及UDP(详解)
2017/11/06 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
Python中format()格式输出全解
2019/04/12 Python
python之拟合的实现
2019/07/19 Python
python 标准差计算的实现(std)
2019/07/29 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
加拿大探亲邀请信
2014/01/28 职场文书
逃课上网检讨书
2014/02/20 职场文书
高中军训感言500字
2014/02/24 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
MySQL连接控制插件介绍
2021/09/25 MySQL
redis 解决库存并发问题实现数量控制
2022/04/08 Redis
python实现简单的三子棋游戏
2022/04/28 Python