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字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
img onload事件绑定各浏览器均可执行
Dec 19 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
Jun 24 Javascript
判断js对象是否拥有某一个属性的js代码
Aug 16 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
vue.js评论发布信息可插入QQ表情功能
Aug 08 Javascript
vue移动端实现下拉刷新
Apr 22 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 Javascript
微信小程序转发事件实现解析
Oct 22 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
Oct 26 Javascript
Vue filter 过滤当前时间 实现实时更新效果
Dec 20 Javascript
vue中的v-model原理,与组件自定义v-model详解
Aug 04 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php备份数据库类分享
2015/04/14 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
Javascript Object.extend
2010/05/18 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
python定时器(Timer)用法简单实例
2015/06/04 Python
详解Python Socket网络编程
2016/01/05 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
深入理解Python中的*重复运算符
2017/10/28 Python
浅谈python中get pass用法
2019/03/19 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
生物专业个人自荐信范文
2013/11/29 职场文书
考博专家推荐信模板
2013/12/02 职场文书
函授药学自我鉴定
2014/02/07 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
经理聘任证明
2015/03/02 职场文书
少年犯观后感
2015/06/11 职场文书
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript
HTML中的表单元素介绍
2022/02/28 HTML / CSS
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python