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 相关文章推荐
20个非常棒的Jquery实用工具 国外文章
Jan 01 Javascript
node.js WEB开发中图片验证码的实现方法
Jun 03 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
Nov 26 Javascript
图解Sublime Text3使用技巧
Dec 21 Javascript
关于input全选反选恶心的异常情况
Jul 24 Javascript
JS+CSS3模拟溢出滚动效果
Aug 12 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
Mar 06 Javascript
JavaScript之iterable_动力节点Java学院整理
Jun 29 Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 jQuery
webpack打包react项目的实现方法
Jun 21 Javascript
使用JavaScript通过前端发送电子邮件
May 22 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 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多用户计数器代码
2007/03/11 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
button没写type=button会导致点击时提交
2014/03/06 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
有关Python的22个编程技巧
2018/08/29 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
个人自我鉴定
2013/11/07 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
毕业生学校组织意见
2015/06/04 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
Node实现搜索框进行模糊查询
2021/06/28 Javascript
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server