vue3拖拉拽组件面板实现(二)使组件可放大缩小

安装 vue-drag-resize

npm i vue-drag-resize

引用

import VueDragResize from "vue-drag-resize/src";

将组件div改为VueDragResize,绑定 宽wh

<VueDragResizev-for="item in list":key="item.id"class="box":style="`transform: translate(${item.x}px, ${item.y}px)`":w="item.w":h="item.h">我是{{ item.lable }}</VueDragResize>

修改放置的方法,放置后加上款wh

// 放置
const onDrop = (e: any) => {// e.offsetX e.offsetY 放置组件的位置list.value.push({id: currentId++,x: e.offsetX - widgetX,y: e.offsetY - widgetY,w: currentWidget.w, // 当前组件的宽h: currentWidget.h, // 当前组件的高lable: currentWidget.lable,});
};

todo 连线插件:jsPlumb

给原始小组件增加宽高属性

{type: "pie",lable: "饼图",w: 200,h: 150,},

完整代码:

<template><div id="app"><!-- 组件列表 --><div class="widget-list"><divv-for="widget in widgetList":key="widget.type"class="widget"draggable="true":onmousedown="(e:any) => onWidgetMouseDown(e, widget)">{{ widget.lable }}</div></div><div class="pannel" @dragover="(e:any) => e.preventDefault()" @drop="onDrop"><VueDragResizev-for="item in list":key="item.id"class="box":style="`transform: translate(${item.x}px, ${item.y}px)`":w="item.w":h="item.h">我是{{ item.lable }}</VueDragResize></div></div>
</template><script lang="ts" setup>
import { ref } from "vue";
import VueDragResize from "vue-drag-resize/src";const list: any = ref([]);
const widgetList: any = ref([{type: "pie",lable: "饼图",w: 200,h: 150,},{type: "line",lable: "折线图",w: 300,h: 150,},{type: "bar",lable: "柱状图",w: 300,h: 200,},
]);
// 当前id
let currentId = 0;
// 组件的x和y
let widgetX = 0;
let widgetY = 0;
// 当前拖动的组件
let currentWidget: any = null;// 放置
const onDrop = (e: any) => {// e.offsetX e.offsetY 放置组件的位置list.value.push({id: currentId++,x: e.offsetX - widgetX,y: e.offsetY - widgetY,w: currentWidget.w, // 当前组件的宽h: currentWidget.h, // 当前组件的高lable: currentWidget.lable,});
};// 在小组件鼠标落下的时候
const onWidgetMouseDown = (e: any, widget: any) => {console.log(widget);// e.offsetX e.offsetX 鼠标落下的位置widgetX = e.offsetX;widgetY = e.offsetY;// 当前拖动的组件 赋给push落下currentWidget = widget;
};
</script><style scoped>
body {margin: 0;padding: 0;
}
#app {width: 100vw;height: 100vh;display: flex;
}
.widget-list {width: 300px;background-color: #dfdfdf;
}
.pannel {flex: 1;background-color: #efefef;position: relative;
}
.widget {width: 100px;height: 100px;outline: 1px solid red;font-size: 20px;text-align: center;line-height: 100px;margin: 20px;
}
.box {outline: 1px solid blue;position: absolute;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/23908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【递归、搜索与回溯】搜索

搜索 1.计算布尔二叉树的值2.求根节点到叶节点数字之和3. 二叉树剪枝4.验证二叉搜索树5.二叉搜索树中第K小的元素6.二叉树的所有路径 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一…

NLP--关键词

在去停用词后的文本中进行词频统计和关键词统计以及词云图显示&#xff0c;来进行文本的关键词提取&#xff0c;让人一目了然。 1.词频统计 统计文本中多次出现的词语&#xff0c;来寻找文章中的关键词&#xff0c;因为多次出现很可能就是关键内容。调用统计数量的Counter库和…

defineProps定义类型

1.props标注类型 原因&#xff1a;确保给组件传递的props是类型安全的 <script setup lang"ts"> //1.使用别名类型或者接口定义Props类型 type Props {name:stringage?:number } //2 使用defineProps注解类型 const props defineProps<Props>() <…

mysql如何处理无效数据

在 MySQL 中处理无效数据值是一个常见任务,可以通过多种方式进行,如使用条件更新、删除、替换或数据校验等。 1. 使用条件更新无效数据值 如果要将表中的无效数据值更新为某个默认值,可以使用 UPDATE 语句配合 WHERE 子句。例如,将负数改为零: UPDATE table_name SET c…

全年申报!2024年陕西省双软企业认定条件标准、申报好处费用

1.双软企业是什么? 答:双软认证并不是一个资质,而是"软件产品登记"和"软件企业认定"两个不同资质的统称.叫做"双软企业" 2.双软企业的优惠政策是什么? 答:(1)软件产品登记的优惠政策:软件产品增值税,从13%减按3%征收,实行即征即退; (2)软件…

BGP邻居长时间停留在Active排错思路

当邻居状态长时间停留在Active&#xff0c;首先应检查网络连通性&#xff0c;包括路由可达性、中间设备的ACL/Firewall规则、TCP端口179是否开放等。 使用网络监控工具或BGP调试命令&#xff08;如在Cisco设备上使用debug bgp events或debug tcp transactions&#xff09;可以…

vben:路由跳转和关闭当前页面

使用Vben admin框架开发前端&#xff0c;在tab页用到路由跳转和关闭当前页面的功能&#xff0c;代码如下。 按钮 <a-button ghost style"margin-right: 20px" click"closeNowTab">取消</a-button>实现代码 import { useGo } from //hooks/w…

Dubbo SPI(Service Provider Interface)机制深度解析

Dubbo SPI&#xff08;Service Provider Interface&#xff09;机制是Apache Dubbo框架中一项核心的技术组件&#xff0c;它超越了传统Java SPI的范畴&#xff0c;为Dubbo带来了高度的可扩展性和灵活性。在分布式服务架构日益复杂多变的今天&#xff0c;Dubbo SPI机制通过巧妙的…

Ansible语法与模块

目录 如何查询帮助 核心模块 社区和特定平台模块 其他常用模块 语法总结 Ansible 命令行工具 1. ansible 2. ansible-playbook 3. ansible-vault 4. ansible-galaxy 5.ansible-doc 6.ansible-config 7.ansible-pull 8.ansible-console 如何查询帮助 ansible-doc…

什么叫防御式编程

防御式编程是一种编程策略&#xff0c;主要目的是提高代码的健壮性和可靠性。它假设任何错误都可能发生&#xff0c;并且在设计和编写代码时采取预防措施以防止这些错误导致程序崩溃或产生错误结果。 以下是一些防御式编程的常见实践&#xff1a; 输入验证&#xff1a;总是验证…

2024Stable Diffusion WebUI详细使用指南

Stable Diffusion WebUI&#xff08;AUTOMATIC1111&#xff0c;简称A1111&#xff09;是一个为高级用户设计的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它提供了丰富的功能和灵活性&#xff0c;以满足复杂和高级的图像生成需求。由于其强大的功能和社区的活跃参与&…

22 - 游戏玩法分析 IV(高频 SQL 50 题基础版)

22 - 游戏玩法分析 IV 考点&#xff1a; 聚合函数 # 日期相加 date_add(min(event_date),INTERVAL 1 DAY) select round(count(distinct player_id)/(select count(distinct player_id) from Activity),2) fraction fromActivity where-- 如果日期加一天的数据能在表中…

pytorch笔记:自动混合精度(AMP)

1 理论部分 1.1 FP16 VS FP32 FP32具有八个指数位和23个小数位&#xff0c;而FP16具有五个指数位和十个小数位Tensor内核支持混合精度数学&#xff0c;即输入为半精度&#xff08;FP16&#xff09;&#xff0c;输出为全精度&#xff08;FP32&#xff09; 1.1.1 使用FP16的优缺…

MySQL主从同步优化指南:架构、瓶颈与解决方案

前言 ​ 在现代数据库架构中&#xff0c;MySQL 主从同步是实现高可用性和负载均衡的关键技术。本文将深入探讨主从同步的架构、延迟原因以及优化策略&#xff0c;并提供专业的监控建议。 MySQL 主从同步架构 ​ 主从复制流程&#xff1a; 从库生成两个线程&#xff0c;一个…

20 - 每月交易 I(高频 SQL 50 题基础版)

20 - 每月交易 I -- 考点&#xff1a;日期转换格式 -- date_format(trans_date,%Y-%m)select date_format(trans_date,%Y-%m) month,country,count(*) trans_count,sum(if(stateapproved,1,0)) approved_count,sum(amount) trans_total_amount,sum(if(state"approved&qu…

【主题广泛|稳定检索】2024年食品安全与生物技术国际会议(ICFSB 2024)

2024年食品安全与生物技术国际会议&#xff08;ICFSB 2024&#xff09; 2024 International Conference on Food Safety and Biotechnology 【重要信息】 大会地点&#xff1a;贵阳 大会官网&#xff1a;http://www.icicfsb.com 投稿邮箱&#xff1a;icicfsbsub-conf.com 【注…

语言大模型qwen1.5全流程解析:微调,量化与推理

在前一篇文章中&#xff0c;主要使用llama-factory封装的推理模块对速度进行了测试&#xff0c;vllm速度快些&#xff0c;但仍没有传说中的快3-5倍&#xff0c;需要单独测试。这里使用qwen1.5-1.8B作为测试模型。 qwen1.5是qwen2的先行版&#xff0c;24年2月发布&#xff0c;与…

this,apply,call,bind 超详细合集

前言 之前在学习this关键字的时候&#xff0c;其实一直都是懵懵懂懂。知道答案但是不知道所以。一直想知道为什么是这样&#xff1f;为什么this默认指向全局呢&#xff1f;今天忽然释然了&#xff0c;我又不是开发这门语言的人&#xff0c;我为什么要纠结这些。那今天就来讲讲…

Apache Doris 2.0.11 版本正式发布

亲爱的社区小伙伴们&#xff0c;Apache Doris 2.0.11 版本已于 2024 年 6 月 5 日正式与大家见面&#xff0c;该版本提交了 123 个改进项以及问题修复&#xff0c;进一步提升了系统的性能及稳定性&#xff0c;欢迎大家下载体验。 官网下载&#xff1a; https://doris.apache.o…

jenkins插件之Jdepend

JDepend插件是一个为构建生成JDepend报告的插件。 安装插件 JDepend Dashboard -->> 系统管理 -->> 插件管理 -->> Available plugins 搜索 Jdepend, 点击安装构建步骤新增执行shell #执行pdepend if docker exec phpfpm82 /tmp/composer/vendor/bin/pdepe…