实现提示框可拖拽(针对antd vue中的a-modal提示框)

2023-11-13

  1. 在 utils 中新建 directives.js 文件
import Vue from 'vue'

// v-drag-modal: 弹窗拖拽
Vue.directive('drag-modal', (el, bindings, vnode) => {
  Vue.nextTick(() => {
    let { visible, destroyOnClose } = vnode.componentInstance
    // 防止未定义 destroyOnClose 关闭弹窗时dom未被销毁,指令被重复调用
    if (!visible) return
    let modal = el.getElementsByClassName('ant-modal')[0]
    let header = el.getElementsByClassName('ant-modal-header')[0]
    let left = 0
    let top = 0
    // 未定义 destroyOnClose 时,dom未被销毁,关闭弹窗再次打开,弹窗会停留在上一次拖动的位置
    if (!destroyOnClose) {
      left = modal.left || 0
      top = modal.top || 0
    }
    // top 初始值为 offsetTop
    top = top || modal.offsetTop
    // 点击title部分拖动
    header.onmousedown = e => {
      let startX = e.clientX
      let startY = e.clientY
      header.left = header.offsetLeft
      header.top = header.offsetTop
      el.onmousemove = event => {
        let endX = event.clientX
        let endY = event.clientY
        modal.left = header.left + (endX - startX) + left
        modal.top = header.top + (endY - startY) + top
        modal.style.left = modal.left + 'px'
        modal.style.top = modal.top + 'px'
      }
      el.onmouseup = event => {
        left = modal.left
        top = modal.top
        el.onmousemove = null
        el.onmouseup = null
        header.releaseCapture && header.releaseCapture()
      }
      header.setCapture && header.setCapture()
    }
    // 点击表单部分拖动
    // modal.onmousedown = e => {
    //   let startX = e.clientX
    //   let startY = e.clientY
    //   header.left = header.offsetLeft
    //   header.top = header.offsetTop
    //   el.onmousemove = event => {
    //     let endX = event.clientX
    //     let endY = event.clientY
    //     modal.left = header.left + (endX - startX) + left
    //     modal.top = header.top + (endY - startY) + top
    //     modal.style.left = modal.left + 'px'
    //     modal.style.top = modal.top + 'px'
    //   }
    //   el.onmouseup = event => {
    //     left = modal.left
    //     top = modal.top
    //     el.onmousemove = null
    //     el.onmouseup = null
    //     header.releaseCapture && header.releaseCapture()
    //   }
    //   header.setCapture && header.setCapture()
    // }
  })
})

2. 在main.js中引入

import '@/utils/directives.js'

3. 在使用a-modal的地方添加v-drag-modal

    <a-modal
      class="po-search"
      width="700px"
      :dialog-style="{ top: '200px' }"
      :visible="isAddSku"
      :destroyOnClose="true"
      @cancel="isAddSku = false"
      v-drag-modal
    >

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现提示框可拖拽(针对antd vue中的a-modal提示框) 的相关文章

  • 从数据 URI 解码 QR 码

    我尝试从数据 uri 中解码二维码 var dataUri data image gif base64 R0lGODdh9gD2AIAAAAAAAP ywAAAAA9gD2AAAC decodeQrCode dataUri cb 我已经尝试
  • 不和谐机器人 |不和谐.js |类型错误:无法读取未定义的属性“长度”

    我正在制作一个 Discord 机器人 并且正在使用 CodeLyon 的视频作为参考 该错误位于我的 message js 文件中 该文件包含以下内容 require dotenv config create cooldowns map
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Grails 在 javascript 内的 GSP 站点中使用 grails var

    我有一个在 GSP 文件中的 javascript 代码中使用 grails 变量值的问题 例如 我有一个会话值session getAttribute selectedValue 我想在 javascript 代码部分使用这个值 我现在的
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 简单的 Vue.js 计算属性说明

    我对 Vue js 并不陌生 但我会再次浏览文档 试图找出我第一次错过的任何内容 我在以下地方看到了这个声明使用计算属性的基本示例部分 https v2 vuejs org v2 guide computed html Basic Exam
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成

随机推荐

  • 题目:L2-035 完全二叉树的层序遍历

    题目 题目详情 L2 035 完全二叉树的层序遍历 25 分 pintia cn 大意 一个二叉树 如果每一个层的结点数都达到最大值 则这个二叉树就是完美二叉树 对于深度为 D 的 有 N 个结点的二叉树 若其结点对应于相同深度完美二叉树的
  • 基于STM32F103的智能门锁系统

    基于STM32F103的智能门锁系统 直接说明实现了什么效果 1 指纹解锁 基于AS608 2 RFID解锁 基于RC522 3 密码解锁 基于LCD电容屏触摸控制 4 蓝牙解锁 基于HC 06 5 后台服务器管理开锁信息 基于ESP826
  • Docker 初学者指南——如何创建您的第一个 Docker 应用程序

    您是开发人员 想从 Docker 入手 这篇文章是为你而写的 在简要介绍什么是 Docker 以及为什么要使用它之后 您将能够使用 Docker 创建您的第一个应用程序 什么是Docker Docker是 Docker Inc 开发的一款免
  • 使用MXNet完成一个基于FCN的盲道实时语义分割

    使用MXNet完成一个基于FCN的盲道识别语义分割 一点说明 基本原理 测试集效果 数据标注 训练 基本设置 读入数据 网络构建 开始训练 测试 一点说明 前段时间根据gluon的教程动手学深度学习和同学项目实地拍摄的盲道图片完成了一个基于
  • 最强自动化测试框架Playwright(17)- 模拟接口

    模拟接口 介绍 Web API 通常作为 HTTP 终结点实现 Playwright提供了API来模拟和修改网络流量 包括HTTP和HTTPS 页面所做的任何请求 包括 XHR 和获取请求 都可以被跟踪 修改和模拟 使用Playwright
  • Ubuntu查看usb设备驱动/usb以太网卡设备驱动

    step1 lsusb 查看当前有哪些usb设备 注意 插在usb口上的外接设备一定能通过lsusb显示出来 但是不一定能通过lspci显示出来 即使这个设备的驱动已经安装了 由于我要查看我的有线网卡的驱动 lsusb命令执行完成以后可知
  • ORA-12505:TNS:listener does not currently know of SID given in connect descriptor

    Oracle安装好之后 默认的listener是localhost 现在为了在局域网内能够访问 其他电脑访问的时候 提示如下错误 ORA 12505 TNS listener does not currently know of SID g
  • 八大排序总结---- 数据结构 (图解法) 面试必会! ! !

    八大排序总结 目录 一 插入排序 InsertSort 二 希尔排序 ShellSort 三 选择排序 SelectSort 四 堆排序 HeapSort 五 冒泡排序 BubbleSort 六 快速排序 QuickSort 1 hoare
  • 至少12亿元收支差,分析运营商7大数据产品应用

    本文不讨论运营商在大数据的应用上暂时的颓势 也不评击其拥有金库却见不着有数的着的商业模式 或许是因为运营商们探索时间起步较晚 也可能由于运营商对于如何开放用户数据还没想明白 又或者是历史遗留的用户数据还存在业务线条分割 区域分割 数据分散情
  • 学会这7个常见问题和答案,让你下一次JavaScript面试获得高分

    在本文中 我将涵盖您在JavaScript 面试中可能遇到的最常见问题 并提供详细的答案和示例 以帮助您在竞争中脱颖而出 无论您是初学者还是经验丰富的开发人员 本指南都会让您有信心打动面试官并找到工作 1 什么是 JavaScript 它与
  • 用R建立岭回归和lasso回归

    1 分别使用岭回归和Lasso解决薛毅书第279页例6 10的回归问题 例6 10的问题如下 输入例题中的数据 生成数据集 并做简单线性回归 查看效果 cement lt data frame X1 c 7 1 11 11 7 11 3 1
  • 软件工程专业毕设题目选题推荐

    文章目录 0 前言 1 题目推荐 2 开题指导 2 1 起因 2 2 如何避坑 重中之重 2 3 为什么这么说呢 2 4 难度把控 2 5 题目名称 3 最后 0 前言 这是学长亲手整理的 软件工程毕设选题系列第三篇 都是经过学长精心审核的
  • 自制ChatGPT批量生成文章多线程 多Key Python脚本

    本文转载自 自制ChatGPT批量生成文章多线程 多Key Python脚本 更多内容请访问钻芒博客 https www zuanmang net 简单 多线程GPT3 5模型 特有需求 生成文章后会先保存txt到文章中 程序跑完之后会在生
  • windows11 BitLocker 强制解锁

    windows11 BitLocker 强制解锁 打开命令提示符 1 输入 manage bde off C 运行后 系统将会对C盘数据解密 2 输入 manage bde status C 查看C盘解密进度 注 也可在控制面板BitLoc
  • 基于springboot+vue的校园二手交易市场

    一 项目背景介绍 校园二手交易市场是大学生生活中的重要组成部分 它为学生提供了一个便捷的方式来买卖物品 然而 传统的校园二手交易方式存在着信息不对称 交易风险高等问题 为了解决这些问题 基于Spring Boot和Vue的校园二手交易市场系
  • SAP HANA Studio管理工具 管理视图

    本文主要介绍SAP HANA Studio管理工具 管理视图相关操作步骤方法 以及使用说明文档 原文地址 SAP HANA Studio管理工具 管理视图
  • 插值算法 —— Lerp, NLerp, SLerp

    一 Lerp Linear interpolation 线性插值 记为 L e r p v 0
  • cuobjdump的使用

    n n desktop nvcc stack overflow cu n n desktop cuobjdump sass a out Fatbin elf code arch sm 20 code version 1 7 producer
  • 聊一聊DDR3中的ODT(On-die termination)

    聊一聊DDR3中的ODT On die termination
  • 实现提示框可拖拽(针对antd vue中的a-modal提示框)

    在 utils 中新建 directives js 文件 import Vue from vue v drag modal 弹窗拖拽 Vue directive drag modal el bindings vnode gt Vue nex