vue3 拖拽插件 Vue3DraggableResizable
Vue3DraggableResizable 拖拽插件的官方文档
一、Vue3DraggableResizable 的属性和事件
1、Vue3DraggableResizable 的属性配置
| 属性 | 类型 | 默认值 | 功能描述 | 示例 |
|---|---|---|---|---|
| initW | Number | null | 设置初始宽度(px) | <Vue3DraggableResizable :initW=“100” /> |
| initH | Number | null | 设置初始高度(px) | <Vue3DraggableResizable :initH=“100” /> |
| w | Number | 0 | 组件的当前宽度(px),你可以使用“v-model:w”语法使它和父组件保持一致 | <Vue3DraggableResizable v-model:w=“100” /> |
| h | Number | 0 | 组件的当前高度(px),你可以使用“v-model:h”语法使它和父组件保持一致 | <Vue3DraggableResizable v-model:h=“100” /> |
| x | Number | 0 | 组件距离父容器的左侧的距离(px),你可以使用“v-model:x”语法使它和父组件保持一致 | <Vue3DraggableResizable v-model:x=“100” /> |
| y | Number | 0 | 组件距离父容器的右侧的距离(px),你可以使用“v-model:y”语法使它和父组件保持一致 | <Vue3DraggableResizable v-model:y=“100” /> |
| minW | Number | 20 | 组件的最小宽度(px) | <Vue3DraggableResizable :minW=“100” /> |
| minH | Number | 20 | 组件的最小高度(px) | <Vue3DraggableResizable :minH=“100” /> |
| active | Boolean | false | 组件当前是否处于活跃状态,你可以使用“v-model:active”语法使它和父组件保持一致 | <Vue3DraggableResizable v-model:active=“true” /> |
| draggable | Boolean | true | 组件是否可拖动 | <Vue3DraggableResizable :draggable=“false” /> |
| resizable | Boolean | true | 组件是否可调整大小 | <Vue3DraggableResizable :resizable=“false” /> |
| lockAspectRatio | Boolean | false | 该属性用来设置是否锁定比例 | <Vue3DraggableResizable :lockAspectRatio=“true” /> |
| disabledX | Boolean | false | 是否禁止组件在 X 轴上移动 | <Vue3DraggableResizable :disabledX=“true” /> |
| disabledY | Boolean | false | 是否禁止组件在 Y 轴上移动 | <Vue3DraggableResizable :disabledY=“true” /> |
| disabledW | Boolean | false | 是否禁止组件修改宽度 | <Vue3DraggableResizable :disabledW=“true” /> |
| disabledH | Boolean | false | 是否禁止组件修改高度 | <Vue3DraggableResizable :disabledH=“true” /> |
| parent | Boolean | false | 是否将组件的拖动和缩放限制在其父节点内,即组件不会超出父节点,默认关闭 | <Vue3DraggableResizable :parent=“true” /> |
| handles | Array | [‘tl’, ‘tm’, ‘tr’, ‘ml’, ‘mr’, ‘bl’, ‘bm’, ‘br’] | 定义缩放的句柄(共八个方向): tl : 上左 tm : 上中 tr : 上右 mr : 中左 ml : 中右 bl : 下左 bm : 下中 br : 下右 | <Vue3DraggableResizable :handles=“[‘tl’,‘tr’,‘bl’,‘br’]” /> |
| classNameDraggable | String | ‘draggable’ | 自定义组件的类名,该类名在组件是“可拖动”时显示 | <Vue3DraggableResizable classNameDraggable=“draggable” /> |
| classNameResizable | String | ‘resizable’ | 自定义组件类名,该类名在组件是“可缩放”时显示 | <Vue3DraggableResizable classNameResizable=“resizable” /> |
| classNameDragging | String | ‘dragging’ | 定义组件在拖动时显示的类名 | <Vue3DraggableResizable classNameDragging=“dragging” /> |
| classNameResizing | String | ‘resizing’ | 定义组件在缩放时显示的类名 | <Vue3DraggableResizable classNameResizing=“resizing” /> |
| classNameActive | String | ‘active’ | 定义组件在活跃状态下的类名 | <Vue3DraggableResizable classNameActive=“active” /> |
| classNameHandle | String | ‘handle’ | 定义缩放句柄的类名 | <Vue3DraggableResizable classNameHandle=“my-handle” /> |
| classNameHandle | String | ‘handle’ | 定义缩放句柄的类名 | <Vue3DraggableResizable classNameHandle=“my-handle” /> |
2、Vue3DraggableResizable 的事件
| 事件 | 入参 | 触发时机 | 功能描述 | 示例 |
|---|---|---|---|---|
| activated | - | 组件从非活跃状态到活跃状态时触发 | - | <Vue3DraggableResizable @activated=“activatedHandle”/> |
| deactivated | - | 组件从活跃状态到非活跃状态时触发 | - | <Vue3DraggableResizable @deactivated=“deactivatedHandle”/> |
| drag-start | { x: number, y: number } | 组件开始拖动时触发 | - | <Vue3DraggableResizable @drag-start=“dragStartHandle”/> |
| dragging | { x: number, y: number } | 组件在拖动过程中持续触发 | - | <Vue3DraggableResizable @dragging=“draggingHandle”/> |
| drag-end | { x: number, y: number } | 组件拖动结束时触发 | - | <Vue3DraggableResizable @drag-end=“dragEndHandle”/> |
| resize-start | { x: number, y: number, w: number, h: number } | 组件开始缩放时触发 | - | <Vue3DraggableResizable @resize-start=“resizeStartHandle” /> |
| resizing | { x: number, y: number, w: number, h: number } | 组件在缩放过程中持续触发 | - | <Vue3DraggableResizable @resizing=“resizingHandle” /> |
| resize-end | { x: number, y: number, w: number, h: number } | 组件缩放结束时触发 | - | <Vue3DraggableResizable @resize-end=“resizeEndHandle” /> |
二、Vue3DraggableResizable 的使用案例
以 vue3 项目为例,看看 Vue3DraggableResizable 的用法:
首先,在 main.ts 中引入 Vue3DraggableResizable,并将其挂在到vue实例上:
// 引入拖拽库
import Vue3DraggableResizable from 'vue3-draggable-resizable'
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css'// Vue 实例
const app = createApp(App)
app.use(Vue3DraggableResizable)
然后在组件中的使用如下:
<template><!-- 拖拽组件 --><Vue3DraggableResizablev-if="isShowMapToolBar"classNameDraggable="draggable":initW="70":initH="30"v-model:x="dragData.x"v-model:y="dragData.y"v-model:w="dragData.w"v-model:h="dragData.h"v-model:active="dragData.active":draggable="true":resizable="true":parent="true"@activated="print('activated')"@deactivated="print('deactivated')"@drag-start="print('drag-start')"@resize-start="print('resize-start')"@dragging="print('dragging')"@resizing="print('resizing')"@drag-end="print('drag-end')"@resize-end="print('resize-end')"><div>Test</div></Vue3DraggableResizable>
</template>
<script setup lang="ts">
// 拖拽的配置
const dragData = reactive({x: 10,y: 10,h: 100,w: 100,active: false,
});
// 拖拽的事件
const print = (val) => {console.log(val)
};
</script>
相关文章:
vue3 拖拽插件 Vue3DraggableResizable
Vue3DraggableResizable 拖拽插件的官方文档 一、Vue3DraggableResizable 的属性和事件 1、Vue3DraggableResizable 的属性配置 属性类型默认值功能描述示例initWNumbernull设置初始宽度(px)<Vue3DraggableResizable :initW“100” />initHNumb…...
VUE父组件向子组件传递数据和方法
文章目录 1 父组件写法2 子组件写法 1 父组件写法 父组件参数和方法 data() {return {// 遮罩层loading: true,// 表格数据yfeList: []}}导入组件 import yfTable from "/views/yf/yfTable.vue";组件 components: {yfTabTable},传值使用 <yfTabTable :loadin…...
NPI加速器在烽火科技SMT车间的应用:贴片机程序制作效率的革新
烽火科技,一个在国内颇具知名度的高科技企业,坐落于武汉光谷的SMT车间中,机器嗡嗡作响,作业员们忙碌地进行着生产。工厂使用的是ASM的贴片机,使用Sipalce Pro作为其编程软件。然而,在高效的生产线背后&…...
如何给照片添加水印?请看下面3个简单教程
如何给照片添加水印?随着智能手机的普及和不断提升的拍摄技术,如今人们可以轻松使用手机进行高质量的照片拍摄。从老人到小孩,每个人都可以在日常生活中捕捉到美好瞬间,并将其记录下来。作为一种表达自己的方式,现在手…...
仿写知乎日报第一周
效果图 主要的逻辑 Manager封装网络请求 首先,对于获取网络请求,我是将这些方法封装成了一个类Manager,后续在获取以往的内容时又封装了一个beforeManager类用于网络请求。这里不多赘述,Manager封装网络请求的知识参考我的以往博…...
32二叉树——DFS深度优先遍历
目录 深度优先算法(Depth-First Search,DFS) LeetCode之路——102. 二叉树的层序遍历 分析 深度优先算法(Depth-First Search,DFS) DFS是一种用于遍历或搜索树状数据结构的算法,其中它首先探…...
华为昇腾NPU卡 ChatGLM2模型使用
参考:https://gitee.com/mindspore/mindformers/blob/dev/docs/model_cards/glm2.md#chatglm2-6b 1、安装环境: 昇腾NPU卡对应英伟达GPU卡,CANN对应CUDA底层; mindspore对应pytorch;mindformers对应transformers 本…...
【机器学习】集成模型/集成学习:多个模型相结合实现更好的预测
1. 概述 1.1 什么是集成模型/集成学习 "模型集成"和"集成学习"是相同的概念。它们都指的是将多个机器学习模型组合在一起,以提高预测的准确性和稳定性的技术。通过结合多个模型的预测结果,集成学习可以减少单个模型的偏差和方差&am…...
如何提高广告投放转化率?Share Creators 资产库与Appsflyer营销数据的全面结合
如何提高广告投放转化率?Share Creators 资产库与Appsflyer营销数据的全面结合 全球经济进入了低迷期。 营销成本越来越高, 营销需要更务实,注重投入产出比。众所周知,除了渠道、客群画像以外, 优秀的广告设计图&#…...
《软件方法》2023版第1章(11)1.4.3 具体工作步骤
DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.3 使用UML建模的工作流步骤 图1-17中“工件形式”一列所列出的图就是本书推荐的在建模工作流ABCD中的UML用法,我用活动图进一步表示建模的步…...
git将当前分支A强制推送远程分支pro上
前言 开发中基于线上分支pro创建了A分支,开发完成之后。又基于线上分支pro创建了B分支,都以此合并到测试分支,两个分支更改中都动用部分共同的文件,这就导致后续开发合并代码越来越乱,这时你想把本地开发的分支强推到…...
【计算机基础】存储器
目录 一.概念二.分类1.按存储介质分类2.按存储方式分类3.按存储器的读写功能分类4.按信息的可保存性分类5.按在计算机系统中的作用分类 三.主存区分SRAM、DRAM、Flash、DDR1.SRAM(静态随机存储器࿰…...
【LCR 159. 库存管理 III】
目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int getrandom(int left,int right,vector<int>& stock){return stock[rand()%(right-left1)left];}void qsort(int l,int r,vector<int>& s…...
Android ADB 常见问题和注意事项
Android ADB 常见问题和注意事项 在使用 ADB 过程中,可能会遇到一些常见问题和需要注意的事项: 1. USB 调试 要使用 ADB,你需要在设备上启用 USB 调试模式。这通常在设备的开发者选项中设置。如果你不能看到开发者选项,可以在设…...
TCP/IP五元组
什么是五元组规则? 五元组是通信术语,英文名称为five-tuple,或5-tuple,五元组包括源IP地址(source IP)、源端口(source port)、目的IP地址(destination IP)、目的端口(destination port) 和 传输层协议(the layer 4 protocol)的五个量集合。…...
aiohttp ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] 错误处理
这个问题原因吧其实就是3.10 开始官网更新了TLS 堆栈默认安全设置 感兴趣的可以看下链接 python官网叙述: Python 3.10 增加了 TLS 堆栈的默认安全设置 解决也很简单,将ssl安全等级降下来就行,例如: import ssl import aiohttp ctx ssl.cr…...
分析RPA流程自动化的挑战和解决方案
随着数字化工具和自动化解决方案的日益成熟,各行各业发掘到RPA机器人流程自动化技术的先进性,逐渐规模化部署RPA。 为了更好地推进RPA的实施,金智维在这里分享一些运用这项技术时面临的共同挑战,并给出针对性的解决方案。 组织架构…...
我试图扯掉这条 SQL 的底裤。只能扯一点点,不能扯多了
之前不是写分页嘛,分页肯定就要说到 limit 关键字嘛。 然后我啪的一下扔了一个链接出来: https://dev.mysql.com/doc/refman/8.0/en/limit-optimization.html 这个链接就是 MySQL 官方文档,这一章节叫做“对 Limit 查询的优化”,针对 limit 和 order by 组合的场景进行了较…...
LeNet(pytorch实现
LeNet 本文编写了一个简单易懂的LeNet网络,并在F-MNIST数据集上进行测试,允许使用GPU计算 在这里插入代码片 import torch from torch import nn, optim import d2lzh_pytorch as d2ldevice torch.device(cuda if torch.cuda.is_available() else cp…...
Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了SeleniumPhantomjs后,准备利用它们获取百度百科的旅游景点消息盒(InfoBox),这也是毕业设计实体对齐和属…...
C# SerialPort 类中 Handshake 属性的实战应用与优化策略
1. 理解Handshake属性的核心作用 串口通信就像两个人用对讲机通话,如果一方说得太快,另一方可能根本听不清。这时候就需要一个协调机制,让双方保持同步。在C#的SerialPort类中,Handshake属性就是这个协调员,专门负责管…...
RexUniNLU保姆级教程:日志埋点+Prometheus监控+NLU服务性能大盘搭建
RexUniNLU保姆级教程:日志埋点Prometheus监控NLU服务性能大盘搭建 1. 为什么需要监控NLU服务? 当你把RexUniNLU部署到生产环境后,会发现几个现实问题:用户说服务响应时快时慢,但不知道具体慢在哪里;出现识…...
保姆级复盘:我在虚拟机里用Silvaco TCAD模拟应变硅工艺的完整流程与踩坑记录
从零构建应变硅工艺仿真:Silvaco TCAD实战全解析与避坑指南 在微电子工艺研发中,仿真技术正成为缩短研发周期、降低试错成本的关键工具。作为一名长期使用Silvaco TCAD进行工艺仿真的工程师,我深刻体会到,从理论到实践之间往往横亘…...
微服务架构下的API设计:RESTful与GraphQL的抉择
微服务架构下的API设计考量微服务架构中,API设计直接影响系统的灵活性、性能和维护成本。RESTful和GraphQL是两种主流方案,各有适用场景。RESTful API的特点RESTful基于HTTP协议,资源导向,通过标准方法(GET/POST/PUT/D…...
AI万能分类器5分钟上手:零代码搭建智能客服分类系统
AI万能分类器5分钟上手:零代码搭建智能客服分类系统 1. 引言:当客服遇到海量工单,如何快速分类? 想象一下,你是一家电商公司的客服主管。每天,成百上千条用户咨询像潮水一样涌进后台:“我的快…...
Ollama本地大模型新玩法:PasteMD剪贴板美化工具深度体验
Ollama本地大模型新玩法:PasteMD剪贴板美化工具深度体验 1. 为什么PasteMD是文本处理的革命性工具 在日常工作中,我们经常遇到这样的困扰: 从会议录音转写的文字稿杂乱无章,关键信息淹没在大量口语化表达中复制粘贴的代码片段丢失…...
深度解析部署包校验:OpenClaw哈希特征提取与比对实操手册
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
基于2自由度1 4悬架模型的模糊PID控制主动悬架模型及效果对比研究
模糊PID控制主动悬架模型 基于2自由度1/4悬架模型,模糊PID可以自适应调整PID控制的系数,实现更好的控制效果 Simulink模型中对比了被动悬架、PID控制和模糊PID控制主动悬架效果 如图为车身加速度、悬架动挠度和轮胎动载荷的对比结果 (包括被动…...
Local Moondream2实操手册:上传图片即获详细描述的全流程
Local Moondream2实操手册:上传图片即获详细描述的全流程 想让你的电脑学会“看图说话”吗?今天我们来聊聊一个特别有意思的工具——Local Moondream2。简单来说,它就像给你的电脑装上了一双智能的眼睛和一个能说会道的嘴巴。你给它一张图片…...
AI Agent Harness Engineering 时代的 UX_UI 设计原则
AI Agent Harness Engineering 时代的 UX/UI 设计原则 1. 引入与连接:与AI共舞的新纪元 1.1 一个未来场景的快照 让我们先进行一个思维实验。想象一下,2027年的一个普通工作日早晨: 你醒来,卧室的智能系统已经根据你的睡眠质量和当天日程调整了室温与照明。你走进厨房,…...
