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 相关文章推荐
JS 控制CSS样式表
Aug 20 Javascript
JS异常处理的一个想法(sofish)
Mar 14 Javascript
原生JavaScript生成GUID的实现示例
Sep 05 Javascript
jQuery中:hidden选择器用法实例
Dec 30 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
Node.js和MongoDB实现简单日志分析系统
Apr 25 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
Aug 05 Javascript
javascript滚轮事件基础实例讲解(37)
Feb 14 Javascript
100多个基础常用JS函数和语法集合大全
Feb 16 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
axios简单实现小程序延时loading指示
Jul 30 Javascript
JS实现超级好看的鼠标小尾巴特效
Dec 01 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
追求程序速度,而不是编程的速度
2008/04/23 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
PHP手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
vue项目中使用Svg的方法
2018/10/24 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
python中对list去重的多种方法
2014/09/18 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
Hotels.com印度:酒店预订
2019/05/11 全球购物
售房协议书范本2014
2014/10/23 职场文书
防卫过当辩护词
2015/05/21 职场文书
音乐剧猫观后感
2015/06/04 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
Github 使用python对copilot做些简单使用测试
2022/04/14 Python