当前位置: 首页 > news >正文

vue3 通过 Vue3DraggableResizable实现拖拽弹窗,可修改大小


先看效果

20250926_084416

以下代码是vue3的写法

1.安装依赖

 npm install vue3-draggable-resizable --save

2.页面代码


<script setup>
import {ref} from "vue";
import Vue3DraggableResizable from "vue3-draggable-resizable";
const x = ref(120);  // 初始X坐标(距离页面左侧的像素值)
const y = ref(20);  // 初始Y坐标(距离页面顶部的像素值)const initW = ref(1510)
const initH = ref(770)
const originalSize = ref({ width: 1510, height: 770 })
const isAmplified = ref(false)
const originalPosition = ref({ x: 50, y: 50 })
const currentWidth = ref(1510); // 当前宽度
const currentHeight = ref(770); // 当前高度+
const audit = ref(true)
const amplification = ()=>{if (!isAmplified.value) {// 第一次点击 - 放大到左上角(0,0)// 保存当前位置和尺寸,用于恢复originalPosition.value = {x: x.value,y: y.value};originalSize.value = {width: currentWidth.value,height: currentHeight.value};// 放大到左上角,宽度设为窗口的95%(可根据需要调整比例)x.value = 0;y.value = 0;currentWidth.value = Math.floor(window.innerWidth * 0.97);currentHeight.value = Math.floor(window.innerHeight * 0.9);} else {// 第二次点击 - 恢复到之前的大小和位置x.value = originalPosition.value.x;y.value = originalPosition.value.y;currentWidth.value = originalSize.value.width;currentHeight.value = originalSize.value.height;}// 切换状态标记isAmplified.value = !isAmplified.value;
}const auditFun = () =>{audit.value = false
}const print = (val) =>{console.log(val)
}
</script><template><Vue3DraggableResizable:initW="initW":initH="initH"v-model:x="x"v-model:y="y"v-if="audit"class="Vue3DraggableResizable":draggable="true"v-model:w="currentWidth"v-model:h="currentHeight":resizable="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 style="display: flex;justify-content: flex-end;align-items: center"><svg @click.stop="amplification" t="1758784881397" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10496" width="25" height="25"><path d="M768 170.666667H256c-46.933333 0-85.333333 38.4-85.333333 85.333333v512c0 46.933333 38.4 85.333333 85.333333 85.333333h512c46.933333 0 85.333333-38.4 85.333333-85.333333V256c0-46.933333-38.4-85.333333-85.333333-85.333333zM256 768V256h512v512H256z" fill="#515151" p-id="10497"></path></svg><svg @click.stop = 'auditFun' style="margin: 20px;cursor: pointer" t="1758772119424" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9473" width="20" height="20"><path d="M555.4 512l304.6-304.6c4.8-4.8 4.8-12.6 0-17.4l-26-26c-4.8-4.8-12.6-4.8-17.4 0L512 468.6 207.4 164c-4.8-4.8-12.6-4.8-17.4 0l-26 26c-4.8 4.8-4.8 12.6 0 17.4L468.6 512 164 816.6c-4.8 4.8-4.8 12.6 0 17.4l26 26c4.8 4.8 12.6 4.8 17.4 0L512 555.4l304.6 304.6c4.8 4.8 12.6 4.8 17.4 0l26-26c4.8-4.8 4.8-12.6 0-17.4L555.4 512z" fill="#272636" p-id="9474"></path></svg></div><div style="padding: 0 20px 20px;height: calc(100% - 60px);overflow: auto;box-sizing: border-box;">内容</div></Vue3DraggableResizable></template><style  lang="scss">
.Vue3DraggableResizable{border-radius: 10px;position: absolute;z-index: 9999;top:0;background: #FFFFFF;
}
.Vue3DraggableResizableBox{width: 100%;height: 100%;position: absolute;z-index: 999;background: rgba(107, 107, 107, 0.33) !important;
}
.vdr-handle-ml,.vdr-handle-mr{height: 95%;opacity: 0;top: 3% !important;
}
.vdr-handle-tl,.vdr-handle-bl,.vdr-handle-tr,.vdr-handle-br{width: 20px;opacity: 0;height: 20px;
}
.vdr-container.active{border-color:transparent;
}
.vdr-handle-tm,.vdr-handle-bm{left: 1.1%;width: 98%;opacity: 0;
}.Vue3DraggableResizable:hover .handle {background-color: rgba(0, 120, 255, 0.3);
}
</style>

http://www.dtcms.com/a/409866.html

相关文章:

  • 广州网站制作信科建设白名单 网站
  • DirBuster工具的文本介绍以及使用方法
  • DeepSeek-V3.1-Terminus:蓝耘API+CherryStudio实测国产最新开源模型,推理能力竟让我后背发凉
  • 金仓数据库:破解电子证照国产化难题,开启政务效能新篇
  • 杭州小蜜蜂网站建设宝坻做网站哪家好
  • 解析前端框架 Axios 的设计理念与源码:从 Promise 美学到双适配架构
  • MQTT 关键特性详解
  • 数据仓库与数据挖掘课程设计
  • 半导体数据分析:GPR算法小白入门(三) 晶体管I-V特性仿真教程
  • 深入理解 Qt 元对象系统:QMetaEnum 的应用与实践
  • html video标签mp4格式视频显示不出来的问题
  • Unity 虚拟仿真实验中设计模式的使用 ——策略模式(Strategy Pattern)
  • 企业级网站欣赏新乡个人网站建设
  • 设计模式——单例模式
  • C++设计模式之结构型模式:外观模式(Facade)
  • PaddleX服务化部署精度低于命令行调用的原因及解决方案
  • 新型域名前置攻击利用Google Meet、YouTube、Chrome及GCP构建流量隧道
  • 使用 C# 设置 Excel 单元格数据验证
  • python 做 网站移动互联网终端设备的主要技术指标是什么
  • Claude Code 的“AI优先”
  • 海外网站推广的公司app开发者需要更新
  • Unity-状态机复用
  • 沈阳铁西做网站公司成都移动网站建设
  • AI提示词应用
  • 【汽车篇】AI深度学习在汽车零部件外观检测——机电轴承的应用
  • 智能网联汽车技术仿真教学软件-沉浸式学习,实战化训练
  • 深圳市网站备案百度seo哪家公司好
  • 商城网站主机在线制作论坛网站
  • 网站建设扌金手指六六wordpress开源可视化编辑
  • SpringData