Element中Dialog的拖拽功能

本文介绍了如何在Vue的ElementUI组件库中为Dialog添加拖拽功能,通过创建全局Vuedirective来实现,并在dialog组件上使用`v-dialogDrag`属性进行应用。
摘要由CSDN通过智能技术生成

vue的element组件库中的dialog没有拖拽功能,搜集资料,整理一下这个功能。全局封装,引入。

一、在项目components文件夹下新建一个js文件;

import Vue from 'vue';



const dialogDrag = {

  bind(el, binding, vnode) {

    const dialogHeaderEl = el.querySelector('.el-dialog__header');

   

    if (dialogHeaderEl) {

      let isDragging = false;

      let startOffsetX = 0;

      let startOffsetY = 0;



      dialogHeaderEl.style.cursor = 'move';

     

      dialogHeaderEl.addEventListener('mousedown', function(event) {

        isDragging = true;

        startOffsetX = event.clientX - el.offsetLeft;

        startOffsetY = event.clientY - el.offsetTop;

        document.addEventListener('mousemove', mouseMove);

        document.addEventListener('mouseup', mouseUp);

      });



      function mouseMove(event) {

        if (isDragging) {

          el.style.left = `${event.clientX - startOffsetX}px`;

          el.style.top = `${event.clientY - startOffsetY}px`;

        }

      }



      function mouseUp() {

        isDragging = false;

        document.removeEventListener('mousemove', mouseMove);

        document.removeEventListener('mouseup', mouseUp);

      }

    }

  },

};



Vue.directive('dialog-drag', dialogDrag);

二、在你的dialog组件上添加v-v-dialogDrag属性,如下:

<el-dialog
      :title="title"
      :visible.sync="open"
      width="850px"
      append-to-body
      class="margintop"
      v-dialogDrag
    >
</el-dialog>

这样就完成dialog拖拽功能了。如果想要修改拖拽的距离,也可自行修改。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值