Vue3鼠标拖拽生成区域块并选中元素
Vue3鼠标拖拽生成区域块并选中元素,选中的元素则背景高亮(或者其它逻辑)。

<script setup>
import { ref } from 'vue'// 区域ref
const regionRef = ref(null)// 内容ref
const itemRefs = ref(null)// 是否开启绘画区域
const enable = ref(false)// 鼠标开始位置
const start = ref({x: 0,y: 0
})// 区域块元素配置
const regionConfig = ref({top: '0px',left: '0px',width: '0px',height: '0px'
})// 鼠标点击
const onMousedown = (e) => {const { pageX, pageY } = estart.value.x = pageXstart.value.y = pageYregionConfig.value.top = pageY + 'px'regionConfig.value.left = pageX + 'px'enable.value = true
}// 鼠标弹起
const onMouseup = () => {enable.value = false
}// 鼠标移动
const onMousemove = (e) => {if (!enable.value) return falseconst { pageX, pageY } = e// 当前鼠标移动的位置减开始位置得到区域块宽高const x = pageX - start.value.xconst y = pageY - start.value.yregionConfig.value.width = Math.abs(x) + 'px'regionConfig.value.height = Math.abs(y) + 'px'// 鼠标移动的位置小于开始位置,当前鼠标的位置是区域块的位置if (x < 0) {regionConfig.value.left = pageX + 'px'}if (y < 0) {regionConfig.value.top = pageY + 'px'}// 获取区域块和内容的位置const boxRect = regionRef.value.getBoundingClientRect()itemRefs.value.forEach((item) => {const rect = item.getBoundingClientRect()// 判断区域块包裹内容元素则改变背景颜色if (boxRect.top <= rect.top && boxRect.bottom >= rect.bottom && boxRect.left <= rect.left && boxRect.right >= rect.right) {item.style.backgroundColor = 'rgb(10, 228, 10)'} else {item.style.backgroundColor = '#cbccce'}})
}
</script><template><mainclass="w_h_100 home"@mousedown="onMousedown"@mouseup="onMouseup"@mousemove="onMousemove"><div class="box"><divref="itemRefs"class="item"v-for="item in 10":key="item">{{ item }}</div></div><divref="regionRef"class="region":style="regionConfig"></div></main>
</template><style lang="less">
.home {display: flex;align-items: center;justify-content: center;.box {width: 200px;display: flex;flex-wrap: wrap;}.item {margin-right: 10px;margin-bottom: 10px;width: 30px;height: 30px;color: #fff;text-align: center;line-height: 30px;background-color: #cbccce;user-select: none;}.region {position: fixed;z-index: 10;border: 1px solid #0094ff;background-color: rgba(0, 148, 255, 0.1);}
}
</style>相关文章:
Vue3鼠标拖拽生成区域块并选中元素
Vue3鼠标拖拽生成区域块并选中元素,选中的元素则背景高亮(或者其它逻辑)。 <script setup> import { ref } from vue// 区域ref const regionRef ref(null)// 内容ref const itemRefs ref(null)// 是否开启绘画区域 const enable ref(false)// 鼠标开始位置…...
[深度理解] 重启 Splunk Search Head Cluster
1: 背景: 关于释放Splunk search head 的job 运行压力:splunk search head cluster 要重启的话,怎么办? 答案是:splunk rolling-restart shcluster-members Initiate a rolling restart from the command line Invoke the splunk rolling-restart command from any me…...
Python + Docker 还是 Rust + WebAssembly?
在不断发展的技术世界中,由大语言模型驱动的应用程序,通常被称为“LLM 应用”,已成为各种行业技术创新背后的驱动力。随着这些应用程序的普及,用户需求的大量涌入对底层基础设施的性能、安全性和可靠性提出了新的挑战。 Python 和…...
[汇编实操]DOSBox工具: unable to open input file: 文件名.asm问题解决
出错原因1 :将文件放在debug文件下,mount后发现并没有该文件 解决方案 :重启DOSBox,重新mount,直到dir后可以看到该asm文件 出错原因2:DOS系统不支持8位以上的文件名 解决方案 :将文件名改为8…...
Windows安装MongoDB
1、下载MongoDB的zip,解压 2、创建目录 mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\db mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\log 3、创建一个配置文件mongod.cfg,…...
HandBrake 1.7 近日发布
导读HandBrake 1.7 近日发布,作为这个开源、免费和跨平台视频转码器应用程序的重大更新,适用于 GNU/Linux、macOS 和 Windows 系统。 在 HandBrake 1.6 发布近一年后,HandBrake 1.7 版本为 Linux 用户提供了许多好处,包括视频摘要…...
Vue3的watch使用介绍及场景
目录 一、watch的使用 1. 监听一个变量 2. 监听一个对象的属性 3. 监听一个函数的返回值 二、watch的使用场景 1. 监听表单的变化 2. 监听路由参数的变化 3. 监听Vuex中的数据变化 三、watch的效果图 四、watch的示例 以上就是Vue3的watch的介绍,watch是…...
Java设计原则和设计模式
目录 第一部分:设计原则 单一职责原则 (Single Responsibility Principle)开闭原则 (Open-Closed Principle)里氏替换原则 (Liskov Substitution Principle)接口隔离原则 (Interface Segregation Principle)依赖倒置原则 (Dependency Inversion Principle)合成/聚…...
webshell之基于框架免杀
thinkphp array_map_recursive函数 array_map_recursive函数分析 这里存在一个call_user_func命令执行函数 免杀效果 B函数 免杀效果 B函数分析 exec函数分析 在exec函数用存在有个类调用,且所有的参数都可控 smarty_php_tag函数 免杀效果 smarty_php_tag函数分析…...
QT QJsonObject 插入 QByteArray十六进制数据
场景描述 有一组十六进制数使用QByteArray进行存储;需要将其插入QJsonObject,然后通过网络发送出去;接收到后,再转换回QByteArray; 操作代码 1. QByteArray转换QString插入QJsonObject QString str ""; …...
概要设计文档案例分享
1引言 1.1编写目的 1.2项目背景 1.3参考资料 2系统总体设计 2.1整体架构 2.2整体功能架构 2.3整体技术架构 2.4运行环境设计 2.5设计目标 3系统功能模块设计 3.1个人办公 4性能设计 4.1响应时间 4.2并发用户数 5接口设计 5.1接口设计原则 5.2接口实现方式 6运行设计 6.1运行模块…...
微服务qiankun通信方式
qiankun: 是一种类似于微服务的架构,是将一个大型应用拆分成若干个更小、更简单,可以独立开发、测试和部署的子应用,然后由一个基座应用根据路由进行应用切换,主要是为了解决大型工程在变更、维护、扩展等方面的困难而…...
【Azure 架构师学习笔记】-Azure Storage Account(7)- 权限控制
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account(6)- File Layer 前言 存储帐户作为其中一个数据终端存储,对安全性的要求非常高,不管…...
听GPT 讲Rust源代码--src/tools(2)
题图来自AI生成 File: rust/src/tools/rust-installer/src/util.rs 在Rust源代码中,rust/src/tools/rust-installer/src/util.rs文件是安装程序的一个辅助文件,它提供了一些实用函数和结构体来处理安装过程中需要的一些操作。 这个文件中定义了几个结构体…...
【python学习】基础篇-常用模块-collections模块:数据结构,如列表、元组、字典和集合等
Python中的collections模块提供了一些有用的数据结构,如列表、元组、字典和集合等。 以下是collections模块中一些常用数据结构的用法: Counter类 Counter类是一个字典子类,用于计数可哈希对象。 它可以接受一个可迭代对象作为参数ÿ…...
【电路笔记】-电源电压
电源电压 文章目录 电源电压1、概述1.1 交流发电机1.2 电池1.3 理想电压源1.4 实际电压源1.5 连接规则 2、相关源2.1 压控电压源 (VCVS)2.2 电流控制电压源 (CCVS) 3、总结 在本文中,我们详细介绍了称为电源电压的重要电子元件的架构、功能和使用。 我们首先提出理想…...
kali部署ARL灯塔资产系统及使用教程
网上有很多ARL部署到centos系统的教程,但是部署到ubuntu或kali linux系统的教程都是乱七八糟,互相抄,而且没有一个能部署成功,鉴于此,写下此教程,帮助大家出坑 一、安装docker环境(网上什么弄钥匙呀,什么稳定源啊都是垃圾) 准备一个纯净的最新的kali linux系统 1、配…...
一、用户管理
一、后端数据库初始化 1.1 因为版本问题,始终报错,按照报错信息去查询解决方案,无法解决 灵机一动: 网址: Spring Boot 3.0 升级 实战踩坑记录 - 掘金 (juejin.cn) 1.2 个人配置【运行成功…...
Could not publish to the server. java.lang.NullPointerException
publishing to tomcat v8.0 server at localhost has encontered a problem. Could not publish to the server. java.lang.NullPointerException 解决办法: 关闭eclipse在自己设置的workspace目录下面,打开目录:.metadata.plugins\org.ecl…...
SpringMVC(三)
十、拦截器 1、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置: <bean class"com.atguigu.interceptor.FirstInterceptor">…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
Easy Excel
Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...
【Java基础】向上转型(Upcasting)和向下转型(Downcasting)
在面向对象编程中,转型(Casting) 是指改变对象的引用类型,主要涉及 继承关系 和 多态。 向上转型(Upcasting) ⬆️ 定义 将 子类对象 赋值给 父类引用(自动完成,无需强制转换&…...
Vue3学习(接口,泛型,自定义类型,v-for,props)
一,前言 继续学习 二,TS接口泛型自定义类型 1.接口 TypeScript 接口(Interface)是一种定义对象形状的强大工具,它可以描述对象必须包含的属性、方法和它们的类型。接口不会被编译成 JavaScript 代码,仅…...
