vue实现点击选中以下内容按钮选中按钮位置以下的所有数据项

1、预期效果 

该需求的由来,是公司的产品为了实现如飞书这款应用中,IM聊天界面多选消息时一个快捷选择消息的操作功能。

2、实现思路

1. 使选择按钮悬浮在列表试图上方;

2. 在鼠标按下按钮时在其样式添加  pointer-events: none  使鼠标点击释放后事件穿透到按钮下方的元素,以此取得该元素信息;

3. 触发后再将按钮恢复到  pointer-events: none  的状态。

由此,当数据项触发 mouseup 事件时可通过判断触发时 pointer-events 是否为 none ,即可得知是通过选择按钮触发,还是直接点击数据项触发。

3、核心代码

<script setup lang="ts">
import { ref } from 'vue';const multipleLineRef = ref<any>(null);
const list = ref<any[]>([]);
// 测试数据
for (let i = 0; i < 20; i++) {list.value.push({ id: i + 1, name: `选项${i + 1}` });
}// 点击选择以下内容按钮穿透
function onMessageMouseup(item: any, index: number) {if (multipleLineRef.value?.style?.pointerEvents === 'none') {list.value.slice(index).forEach(citem => {citem.checked = true;})multipleLineRef.value.style.pointerEvents = 'auto';}else {item.checked = !item.checked;}
}
</script><template><div class="page-box"><div ref="multipleLineRef" class="multiple-box"><div class="multiple-btn" @mousedown="multipleLineRef.style.pointerEvents = 'none'">选择以下内容</div><div class="multiple-line" /></div><div class="list-box"><div v-for="(item, index) in list" :key="item.id" class="list-item" @mouseup.stop="onMessageMouseup(item, index)">{{ item.name }}:{{ item.checked ? '选中' : '未选中' }}</div></div></div>
</template><style scoped>
.page-box {position: relative;width: 750px;height: 750px;background-color: #f5f5f5;
}
.multiple-box {position: absolute;left: 20px;right: 20px;top: 100px;z-index: 2;
}
.multiple-btn {position: absolute;left: 20px;top: 0;background-color: #eee;border: 1px solid #BBBFC4;padding-left: 10px;padding-right: 10px;line-height: 30px;font-size: 14px;border-radius: 4px;cursor: pointer;
}
.multiple-line {height: 1px;width: 100%;background-color: red;margin-top: 15px;
}
.list-box {height: 750px;overflow-y: auto;
}
.list-item {padding: 30px;border-bottom: 1px solid #eee;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘马斯克的日常:凌晨3点睡,每天苦恼开哪辆车,曾一度每周工作120小时 | 最新快讯

作为特斯拉和 SpaceX 的首席执行官&#xff0c;同时也是社交媒体平台X&#xff08;前身为推特&#xff09;的拥有者&#xff0c;埃隆马斯克以其在科技和商业领域的杰出成就而闻名。他的成功与其独特而苛刻的日常生活习惯密切相关。 上班前必须先洗澡 通勤时苦恼开哪辆特斯拉 据…

某大型文旅集团车辆维修公司薪酬绩效改革项目纪实 图片附件

---如何通过绩效薪酬改革&#xff0c;帮助公司降本增效 文旅行业“旺丁不旺财”&#xff1f;学会这样激励人才&#xff01;“五一”假期出游继续呈现火爆态势&#xff0c;但也出现了一些“旺丁不旺财”“增收不增利”的现象。文旅行业最重要的还是人力因素&#xff0c;靠人去做…

GPS与精致农业 无人机应用 农业遥感 农业类

全球定位系统是美国国防部主要为满足军事部门对海上、陆地和空中设施进行高精度导航和定位的要求而建立的。GPS系统最基本的特点是以“多星、高轨、高频、测量-测距”为体制&#xff0c;以高精度的原子钟为核心。GPS作为新一代卫星导航与定位系统&#xff0c;不仅具有全球性、全…

AF594-标记羊抗鼠免疫球蛋白(H+L),山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上,然后再偶联以小化交叉反应性

试剂介绍&#xff1a; AF594-标记羊抗鼠免疫球蛋白(HL)是荧光标记二抗&#xff0c;我们的山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上&#xff0c;然后再偶联以小化交叉反应性。 这种AF594标记的山羊抗小鼠IgG缀合物通过交叉吸附的山羊抗小鼠IgG全抗体与AF594 NHS酯…

python-scrapy框架示例

参考&#xff1a;https://blog.csdn.net/qq_44907926/article/details/119531324 创建项目步骤&#xff1a; 1.目标网站:www.itcast.cn 2.安装虚拟环境 pip install virtualenv3.创建虚拟环境 virtualenv --always-copy --system-site-packages venv4.激活虚拟环境 venv\sc…

便捷的驾驶证识别API,简化工作流程

随着社会的发展和人们生活水平的提高&#xff0c;机动车的数量也越来越多。为了确保交通安全和减少违法行为&#xff0c;每个驾驶机动车的人都需要携带驾驶证。然而&#xff0c;识别驾驶证上的信息却是一个繁琐的过程。为了简化这个工作流程&#xff0c;提高工作效率&#xff0…

信创基础软件之数据库

一、数据库概述 数据库是一种用于存储和管理拥有固定格式和结构数据的仓库型数据管理系统。其主要用于业务数据的存储和业务逻辑运算&#xff0c;具体负责保障数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复。 二、数据库的体系架构 数据库内核:对数…

这份攻防图谱,哪个搞安全的见了会不想要?(附下载)

近年来&#xff0c;随着我国信息化建设不断推进&#xff0c;信息技术广泛应用&#xff0c;信息网络快速普及。信息网络在促进经济发展、社会进步、科技创新的同时&#xff0c;也带来十分突出的信息安全问题。 现今的网络攻击手段逐步多样化、攻击方式也更加隐蔽难以发现。对于…

信息安全-古典密码学简介

目录 C. D. Shannon: 一、置换密码 二、单表代替密码 ① 加法密码 ② 乘法密码 ③密钥词组代替密码 三、多表代替密码 代数密码 四、古典密码的穷举分析 1、单表代替密码分析 五、古典密码的统计分析 1、密钥词组单表代替密码的统计分析 2、英语的统计规…

WebSocket 全面解析+实战演练(Nodejs实现简易聊天室)

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f31f; 引言&#x1f4da; WebSocket基础概念&#x1f4cc; 什么是WebSocket&#xff1f;&#x1f4cc; 为什么需要WebSocket&#xff1f;&#x1f4cc; 与HTTP的关系 &#x1f4bb; WebSocket API 使用指南&#x1…

《学周刊》杂志社学周刊杂志社学周刊编辑部2024年第15期目录

高等教育 人工智能时代的高校人才培养模式创新探讨 潘邦超; 1-3 高等院校视角下的“家校社”协同育人问题及对策研究——以驻盐高校为例 张雨清; 4-6 职业教育《学周刊》投稿&#xff1a;cn7kantougao163.com 基于EST理念的中职《成本会计》课程混合式教学策略研究…

JAVA中的线程、死锁、异常

线程 Thread 一、程序 1&#xff0e;一段静态代码&#xff08;静态&#xff09; 二、进程 1&#xff0e;动态的&#xff0c;有开始&#xff0c;有结束&#xff1b;2&#xff0e;程序的一次执行过程&#xff0c;3&#xff0e;操作系统调度分配资源的最小单位&#xff1b; 三、…

循环编码:时间序列中周期性特征的一种常用编码方式

在深度学习或神经网络中&#xff0c;“循环编码”&#xff08;Cyclical Encoding&#xff09;是一种编码技术&#xff0c;其特点是能够捕捉输入或特征中的周期性或循环模式。这种编码方法常用于处理具有周期性行为的任务&#xff0c;比如时间序列预测或理解展示周期性特征的序列…

函数编辑器调研及设计开发

前言&#xff1a;在产品研发中需要一款可嵌入web开发的代码及函数编辑器&#xff0c;本文从功能&#xff0c;扩展&#xff0c;外观/交互&#xff0c;维护/社区&#xff0c;兼容性&#xff0c;开源与否等方面考虑&#xff0c;进行对比筛选 1、编辑器统计数据 市面上编辑器有很…

软考是否存在包过班?

国家考试&#xff0c;虽然有人喊着包过&#xff0c;但你也别轻易相信啊&#xff0c;姐妹&#xff0c;要好好保护好你的钱包啊&#xff01;这种考试是没有所谓的包过的。 给你一些学习软考需要注意的要点&#xff1a; 1、深入理解考试内容&#xff1a; 在准备软考之前&#xf…

【redis】redis持久化分析

目录 持久化Redis持久化redis持久化的方式持久化策略的设置1. RDB&#xff08;快照&#xff09;fork(多进程)RDB配置触发RDB备份自动备份手动执行命令备份&#xff08;save | bgsave&#xff09;flushall命令主从同步触发动态停止RDB RDB 文件恢复验证 RDB 文件是否被加载 RDB …

面试中算法(删去n个数字后的最小值)

有一个整数&#xff0c;从该整数中去掉n个数字&#xff0c;要求剩下的数字形成的新整数尽可能小。 分析&#xff1a;使用栈的特性&#xff0c;在遍历原整数的数字时&#xff0c;让所有数字一个一个入栈&#xff0c;当某个数字需要被删除时&#xff0c;&#xff08;即栈顶数字&g…

期权扫盲贴:基础知识汇总,如何开通低佣期权账户(建议收藏)

一、什么是场内期权&#xff1f; 场内期权&#xff0c;也被称为交易所期权&#xff0c;是指在证券交易所内进行交易的标准化期权合约。 场内期权的交易是由证券交易所发布和监管的&#xff0c;具有统一的合约规格和交易规则&#xff0c;因此方便投资者进行交易。 以中国证券…

智慧公厕建设,打造智慧城市基础设施新亮点

公共厕所是城市基础设施的重要组成部分&#xff0c;而智慧公厕的建设则是现代城市管理的创新之举。为了实现公厕的精细化管理和提供更便捷的服务&#xff0c;推进智慧公厕建设必须要实现技术融合、业务融合、数据融合的目标&#xff0c;跨越层级、地域、系统、部门和业务的限制…

【C语言】——联合体与枚举

【C语言】——联合体与枚举 一、联合体1.1、联合体类型的声明1.2、联合体的特点1.3、相同成员的结构体和联合体对比1.4、联合体的大小计算1.5、联合体的应用举例 二、枚举2.1、枚举类型的声明2.2、枚举类型的优点 一、联合体 1.1、联合体类型的声明 联合体也叫做共用体   与…