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 相关文章推荐
Extjs学习笔记之二 初识Extjs之Form
Jan 07 Javascript
php gethostbyname获取域名ip地址函数详解
Jan 24 Javascript
js showModalDialog弹出窗口实例详解
Jan 07 Javascript
JavaScript获取URL汇总
Jun 08 Javascript
javascript实现unicode与ASCII相互转换的方法
Dec 10 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
May 17 Javascript
深入理解React中何时使用箭头函数
Aug 23 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
Jun 14 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
Sep 21 Javascript
解决Layui数据表格的宽高问题
Sep 28 Javascript
Vue实现base64编码图片间的切换功能
Dec 04 Javascript
在vue中使用image-webpack-loader实例
Nov 12 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
flexigrid 参数说明
2010/11/23 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
JS实现页面数据懒加载
2020/02/13 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
Python运算符重载用法实例分析
2015/06/01 Python
python字符串的方法与操作大全
2018/01/30 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
财务经理的岗位职责
2013/12/17 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
食品安全标语
2014/06/07 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
化妆品促销活动总结
2015/05/07 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript