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 Konami Code 实现代码
Jul 29 Javascript
新浪微博字数统计 textarea字数统计实现代码
Aug 28 Javascript
Windows 系统下安装和部署Egret的开发环境
Jul 31 Javascript
vue中渐进过渡效果实现
Oct 27 Javascript
node.js版本管理工具n无效的原理和解决方法
Nov 24 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
Dec 12 Javascript
AngularJS之页面跳转Route实例代码
Mar 10 Javascript
微信分享调用jssdk实例
Jun 08 Javascript
JavaScript hasOwnProperty() 函数实例详解
Aug 04 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
May 17 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
Oct 22 Javascript
使用js实现单链解决前端队列问题的方法
Feb 03 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程序中的常见漏洞进行攻击
2006/10/09 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
基于php iconv函数的使用详解
2013/06/09 PHP
Joomla开启SEF的方法
2016/05/04 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
讲解Python中if语句的嵌套用法
2015/05/14 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
numpy数组广播的机制
2019/07/12 Python
Django实现分页显示效果
2019/10/31 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
Gap英国官网:Gap UK
2018/07/18 全球购物
文明城市标语
2014/06/16 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
Python+Appium新手教程
2021/04/17 Python