vue3 - 详细实现鼠标按住后拖动图片到指定位置并自动贴合吸附盒子容器,左边和右边分别设置好容器将图像拖拽到任意位置,左右来回拖动放置图片,vue实现让图片可以拖拽交换位置,图片在两个盒子里互换位置

效果图

在vue3、nuxt3项目开发中,详解实现两个盒子内图片元素位置任意互换,鼠标按住图片可拖动到自定义容器范围内,将图片拖曳到指定元素位置并自动贴边吸附,vue3实现拖拽图片切换图片位置,左右两侧可交替拖拽一张图像,左侧右侧两个范围HTML框可以来回拖拽放置图片,把鼠标按住不放拖曳图像或图标到指定元素周边附近后,松手即可自动吸附贴合。

提供详细示例代码,新手小白复制稍微改改就能用了。

在这里插入图片描述

完整源码

全部代码如下。

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
你可以使用 Vue3 内置的 `draggable` 指令来实现拖动元素,并且结合 `droppable` 指令来实现拖动元素指定容器内。 以下是一个简单的示例: ```html <template> <div class="container"> <div class="drag-area" v-draggable> Drag me! </div> <div class="drop-area" v-droppable> Drop here! </div> </div> </template> <script> export default { directives: { draggable: { mounted(el) { let isDragging = false; let originalX, originalY; el.addEventListener("mousedown", function(event) { isDragging = true; originalX = event.clientX; originalY = event.clientY; el.style.cursor = "grabbing"; }); el.addEventListener("mousemove", function(event) { if (isDragging) { const deltaX = event.clientX - originalX; const deltaY = event.clientY - originalY; el.style.transform = `translate(${deltaX}px, ${deltaY}px)`; } }); el.addEventListener("mouseup", function() { isDragging = false; el.style.cursor = "grab"; el.style.transform = ""; }); } }, droppable: { mounted(el) { el.addEventListener("dragover", function(event) { event.preventDefault(); el.style.backgroundColor = "yellow"; }); el.addEventListener("dragleave", function() { el.style.backgroundColor = ""; }); el.addEventListener("drop", function(event) { event.preventDefault(); const draggedElement = document.querySelector(".drag-area"); el.appendChild(draggedElement); el.style.backgroundColor = ""; }); } } } } </script> <style> .container { display: flex; justify-content: center; align-items: center; height: 100vh; } .drag-area { display: flex; justify-content: center; align-items: center; width: 100px; height: 100px; background-color: #efefef; border: 1px solid #ccc; cursor: grab; } .drop-area { display: flex; justify-content: center; align-items: center; width: 200px; height: 200px; background-color: #eee; border: 1px dashed #ccc; } </style> ``` 在上面的代码中,我们定义了两个指令 `v-draggable` 和 `v-droppable`,分别用于实现元素拖动容器放置。在 `v-draggable` 指令中,我们监听鼠标事件来实现元素拖动,同时设置了 `cursor` 样式来改变鼠标指针的形状。在 `v-droppable` 指令中,我们监听了三个事件来实现容器放置:`dragover`、`dragleave` 和 `drop`。其中 `dragover` 和 `dragleave` 用于设置容器的背景颜色,以提示用户当前的操作状态;`drop` 事件中我们将拖动元素添加到容器中,并清除容器的背景颜色。 注意:以上示例只是一个简单的实现,还有很多细节需要考虑,比如拖动元素时的边界限制、容器元素的排序等问题。如果需要更复杂的功能,建议使用第三方库来实现,比如 `vuedraggable`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

街尾杂货店&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值