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

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鼠标拖拽生成区域块并选中元素&#xff0c;选中的元素则背景高亮(或者其它逻辑)。 <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?

在不断发展的技术世界中&#xff0c;由大语言模型驱动的应用程序&#xff0c;通常被称为“LLM 应用”&#xff0c;已成为各种行业技术创新背后的驱动力。随着这些应用程序的普及&#xff0c;用户需求的大量涌入对底层基础设施的性能、安全性和可靠性提出了新的挑战。 Python 和…...

[汇编实操]DOSBox工具: unable to open input file: 文件名.asm问题解决

出错原因1 &#xff1a;将文件放在debug文件下&#xff0c;mount后发现并没有该文件 解决方案 &#xff1a;重启DOSBox&#xff0c;重新mount&#xff0c;直到dir后可以看到该asm文件 出错原因2&#xff1a;DOS系统不支持8位以上的文件名 解决方案 &#xff1a;将文件名改为8…...

Windows安装MongoDB

1、下载MongoDB的zip&#xff0c;解压 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&#xff0c…...

HandBrake 1.7 近日发布

导读HandBrake 1.7 近日发布&#xff0c;作为这个开源、免费和跨平台视频转码器应用程序的重大更新&#xff0c;适用于 GNU/Linux、macOS 和 Windows 系统。 在 HandBrake 1.6 发布近一年后&#xff0c;HandBrake 1.7 版本为 Linux 用户提供了许多好处&#xff0c;包括视频摘要…...

Vue3的watch使用介绍及场景

目录 一、watch的使用 1. 监听一个变量 2. 监听一个对象的属性 3. 监听一个函数的返回值 二、watch的使用场景 1. 监听表单的变化 2. 监听路由参数的变化 3. 监听Vuex中的数据变化 三、watch的效果图 四、watch的示例 以上就是Vue3的watch的介绍&#xff0c;watch是…...

Java设计原则和设计模式

目录 第一部分&#xff1a;设计原则 单一职责原则 (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函数用存在有个类调用&#xff0c;且所有的参数都可控 smarty_php_tag函数 免杀效果 smarty_php_tag函数分析…...

QT QJsonObject 插入 QByteArray十六进制数据

场景描述 有一组十六进制数使用QByteArray进行存储&#xff1b;需要将其插入QJsonObject&#xff0c;然后通过网络发送出去&#xff1b;接收到后&#xff0c;再转换回QByteArray&#xff1b; 操作代码 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&#xff1a; 是一种类似于微服务的架构&#xff0c;是将一个大型应用拆分成若干个更小、更简单&#xff0c;可以独立开发、测试和部署的子应用&#xff0c;然后由一个基座应用根据路由进行应用切换&#xff0c;主要是为了解决大型工程在变更、维护、扩展等方面的困难而…...

【Azure 架构师学习笔记】-Azure Storage Account(7)- 权限控制

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account&#xff08;6&#xff09;- File Layer 前言 存储帐户作为其中一个数据终端存储&#xff0c;对安全性的要求非常高&#xff0c;不管…...

听GPT 讲Rust源代码--src/tools(2)

题图来自AI生成 File: rust/src/tools/rust-installer/src/util.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-installer/src/util.rs文件是安装程序的一个辅助文件&#xff0c;它提供了一些实用函数和结构体来处理安装过程中需要的一些操作。 这个文件中定义了几个结构体…...

【python学习】基础篇-常用模块-collections模块:数据结构,如列表、元组、字典和集合等

Python中的collections模块提供了一些有用的数据结构&#xff0c;如列表、元组、字典和集合等。 以下是collections模块中一些常用数据结构的用法&#xff1a; Counter类 Counter类是一个字典子类&#xff0c;用于计数可哈希对象。 它可以接受一个可迭代对象作为参数&#xff…...

【电路笔记】-电源电压

电源电压 文章目录 电源电压1、概述1.1 交流发电机1.2 电池1.3 理想电压源1.4 实际电压源1.5 连接规则 2、相关源2.1 压控电压源 (VCVS)2.2 电流控制电压源 (CCVS) 3、总结 在本文中&#xff0c;我们详细介绍了称为电源电压的重要电子元件的架构、功能和使用。 我们首先提出理想…...

kali部署ARL灯塔资产系统及使用教程

网上有很多ARL部署到centos系统的教程,但是部署到ubuntu或kali linux系统的教程都是乱七八糟,互相抄,而且没有一个能部署成功,鉴于此,写下此教程,帮助大家出坑 一、安装docker环境(网上什么弄钥匙呀,什么稳定源啊都是垃圾) 准备一个纯净的最新的kali linux系统 1、配…...

一、用户管理

一、后端数据库初始化 1.1 因为版本问题&#xff0c;始终报错&#xff0c;按照报错信息去查询解决方案&#xff0c;无法解决 灵机一动&#xff1a; 网址&#xff1a; Spring Boot 3.0 升级 实战踩坑记录 - 掘金 (juejin.cn) &#xff11;.&#xff12; 个人配置【运行成功…...

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 解决办法&#xff1a; 关闭eclipse在自己设置的workspace目录下面&#xff0c;打开目录&#xff1a;.metadata.plugins\org.ecl…...

SpringMVC(三)

十、拦截器 1、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置&#xff1a; <bean class"com.atguigu.interceptor.FirstInterceptor">…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...