鼠标拖拽拖动盒子时,与盒子内某些点击事件冲突问题解决
目录
- 问题
- 解决思路
- 解决代码(标注【主要代码】的为重点)
问题
拖动该悬浮球时,鼠标弹起可能会触发悬浮球内事件
解决思路
- 鼠标拖动盒子时,将
isMove设为true意为正在拖动盒子,此时将class="btns_move"遮挡容器展示在悬浮球上层,以覆盖悬浮球,此时也就不存在触发悬浮球点击事件的冲突了;鼠标拖动完盒子弹起时再将isMove设为false意为不在拖动盒子(遮挡容器class="btns_move"不存在),可以触发悬浮球点击事件- 【注解】
click点击事件主要是在鼠标弹起时触发,class="btns_move"容器展示时,鼠标已不再悬浮器上点击,所以也就不存在鼠标在悬浮球上弹起的说法,因此可解决拖动盒子时与悬浮球点击事件冲突的问题
解决代码(标注【主要代码】的为重点)
index.vue
<div ref="btns" class="btns" @mousedown="mousedownHandler"><div class="btns_other_police" @click="$refs.SearchDialogRef.open('police')"><img :src="require(`@/assets/portrait/iconfont/${theme}_police.png`)" /><span>其他警员</span></div><div class="btns_fullscreen_show" @click="handleScreenFull"><img :src="require(`@/assets/portrait/iconfont/${theme}_expand.png`)" /><span> {{ isFullscreen ? '退出全屏' : '全屏显示' }} </span></div><!-- <div v-show="isMove" class="btns_move">我是避免拖动盒子与盒子内事件冲突的元素</div> --><div v-show="isMove" class="btns_move" /> <!-- 【主要代码】 -->
</div>
index.scss
.btns {$btnWiddth: 70px;position: absolute;bottom: 10px;right: 10px;// z-index: 9999;z-index: 2000;width: $btnWiddth;height: 147px;cursor: move;opacity: 0.8;&_other_police,&_fullscreen_show {width: $btnWiddth;height: $btnWiddth;display: flex;flex-direction: column;align-items: center;justify-content: center;// background-color: red;border-radius: 50px;font-size: 12px;cursor: pointer;img {width: 25px;height: 25px;margin-bottom: 5px;}}&_other_police {margin-bottom: 7px;}&_move {width: 100%;height: 100%;// background-color: red;position: absolute; /* 【主要代码】 */top: 0;// z-index: -10;}
}
mixins/index.js
import { mapGetters } from 'vuex'
import screenfull from 'screenfull'
import portraitMock from '../../../../public/static/portraitMock.json'export const PortraitMixin = {data() {return {lightEchartsNoDataColor: '#000',blueEchartsNoDataColor: '#fff',timeFormat: 'yyyy/MM/dd',timeValueFormat: 'yyyy-MM-dd',portraitMock,initBtnX: 0,initBtnY: 0,isMove: false // 【主要代码】}},computed: {...mapGetters(['isFullscreen'])},mounted() {const _this = thiswindow.addEventListener('resize',() => {// 全屏下监控是否按键了ESCif (_this.checkFull()) {// 全屏下按键esc后要执行的动作screenfull.exit()_this.$store.commit('SET_isFullscreen', false)}},false)document.addEventListener('mouseup', () => {this.isMove = false // 【主要代码】document.removeEventListener('mousemove', this.mousemoveHandler)})},filters: {noDataFilter(val) {return val || val === 0 ? val : '-'},numFilter(val) {return val || val === 0 ? Number(val).toLocaleString() : '-'},bmQlfFilter(val, color, key) {const data = val.filter((item) => item.policeColorCode.includes(color))return data.length ? (data[0][key] || data[0][key] === 0 ? data[0][key] : '-') : '-'}},methods: {// 全屏显示handleScreenFull() {if (!screenfull.isEnabled) {this.$message({message: 'you browser can not work',type: 'warning'})return false}if (this.isFullscreen) {screenfull.exit()this.$store.commit('SET_isFullscreen', false)this.$store.commit('SET_isShowHeader', true)} else {screenfull.request()this.$store.commit('SET_isFullscreen', true)this.$store.commit('SET_isShowHeader', false)}},/*** 是否全屏并按键ESC键的方法*/checkFull() {const isFullscreen =window.fullScreen ||window.isFullscreen ||document.webkitIsFullScreen ||document.msFullscreenEnabledlet isFull = document.fullscreenEnabled && !isFullscreen// to fix : false || undefined == undefinedif (isFull === undefined) {isFull = false}return isFull},toDetailHandler(type) { // 该方法和此处无关if (type === 'zffx') {this.$router.push({path: '/warning-manage-common/warning-query',query: {date: JSON.stringify({kssj: this.zffxSearchTime[0],jssj: this.zffxSearchTime[1]}),...(this.searchXm ? { zrr: this.searchXm } : {}),...(this.searchBm ? { ssbm: this.searchBm } : {})}})}},mousedownHandler($event) {this.initBtnX = $event.pageX - this.$refs.btns.offsetLeftthis.initBtnY = $event.pageY - this.$refs.btns.offsetTopdocument.addEventListener('mousemove', this.mousemoveHandler)},mousemoveHandler($event) {this.isMove = true // 【主要代码】this.$refs.btns.style.left = $event.pageX - this.initBtnX + 'px'this.$refs.btns.style.top = $event.pageY - this.initBtnY + 'px'}}
}
解决效果

相关文章:
鼠标拖拽拖动盒子时,与盒子内某些点击事件冲突问题解决
目录 问题解决思路解决代码(标注【主要代码】的为重点) 问题 拖动该悬浮球时,鼠标弹起可能会触发悬浮球内事件 解决思路 鼠标拖动盒子时,将 isMove 设为 true 意为正在拖动盒子,此时将 class"btns_move" 遮…...
PMP项目管理证书是什么?有什么用?
什么是PMP证书? PMP全称是Project Management Professional,中文全称叫项目管理专业人士资格认证,是由美国项目管理协会(PMI)发起,严格评估项目管理人员知识技能是否具有高品质的资格认证考试,目的是为了给项目管理人…...
iframe的父子通讯
最近有个需求是在父页面打开一个弹窗,然后弹窗里面是一个iframe,在关闭弹窗时需要把iframe中的audio标签的音频链接清空和做一些其他的操作。因为以前很少接触iframe,所以对它有点陌生,在经过大佬的指点和上网查阅后找到了解决方法…...
使用docker创建minio镜像并上传文件,提供demo
使用docker创建minio镜像并上传文件,提供demo 1. 整体描述2. 环境搭建2.1 windows环境搭建2.2 docker部署 3. spring集成3.1 添加依赖3.2 配置文件3.3 创建config类3.4 创建minio操作类3.5 创建启动类3.6 测试controller 4. 测试操作4.1 demo运行4.2 页面查看4.3 上…...
02 java ---- Android 基础app开发
目录 相对布局 显示一个美女 显示两个美女 安卓APP启动过程 安卓布局控件 常用布局之相对布局 常用布局之相对布局 padding和margin 按键美化 常用布局之线性布局 安卓按键响应的几种方式 直接设置按键的onClick绑定的函数 自定义类实现按键监听事件的接口 匿名内…...
鲁棒性与稳定性区别
鲁棒性 所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性粗携。 稳定性 所谓“稳定性”,是指控制系统在使它偏离平衡状态的扰动作用消失后,返回原来平衡状…...
C++项目实战——基于多设计模式下的同步异步日志系统-⑦-日志输出格式化类设计
文章目录 专栏导读日志格式化类成员介绍patternitems 格式化子项类的设计抽象格式化子项基类日志主体消息子项日志等级子项时间子项localtime_r介绍strftime介绍 源码文件名子项源码文件行号子项线程ID子项日志器名称子项制表符子项换行符子项原始字符串子项 日志格式化类的设计…...
Android---底部弹窗之BottomSheetDialog
BottomSheetDialog 是Android开发中的一个弹出式对话框,它从屏幕底部弹出并覆盖部分主界面。 1. BottomSheetDialog的使用 // 参数2:设置BottomSheetDialog的主题样式;将背景设置为transparent,这样我们写的shape_bottom_sheet_…...
Cesium 地球网格构造
Cesium 地球网格构造 Cesium原理篇:3最长的一帧之地形(2:高度图) HeightmapTessellator 用于从高程图像创建网格。提供了一个函数 computeVertices,可以根据高程图像创建顶点数组。 该函数的参数包括高程图像、高度数据的结构、网格宽高、…...
C++深度优化——cacheline测试
cacheline是内存调度的基本结构,其大小一般为32B或者64B。关于本机具体的配置信息可以在配置文件中看到: 这里可以看到我的这台机器的cacheline大小是64B。对于cacheline在多核处理器中有一个伪共享的状态,具体可以参考以下博客:高…...
【数字IC/FPGA】Verilog中的递归调用
参考文章 在Verilog2001中,模块的递归调用是可能的,引用下面的一段话(出自上面的参考文章) Many designers think that recursive techniques cannot be applied to hardware design. I’m not really sure where this misconception comes from. While it is true that i…...
禁用Win10自动更新
第一步,winr,输入 gpedit.msc 并回车,打开【组策略】 第二步,依次点击 管理模板->Windows组件->Windows更新 第三步,双击Windows更新,然后在设置中双击 指定 intranet Microsoft 更新服务位置 第…...
算法通关村-----动态规划高频问题
最少硬币数问题 问题描述 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬…...
记一起小意外事件引起的批量重命名文件名
一、事件描述 某次,因某业务系统迁移,一线人员对业务目录误操作,执行打包命令过程中导致Tomcat下的web应用程序无法使用,检查后发现项目下所有文件名都加了gz格式;询问一线,发现是对项目目录执行了:gzip -r ./tomcat导致程序文件找不到;报错如下: 二、事件处理 1、查看…...
【Excel函数】Excel的Len函数求对象的字符数
在Excel中,LEN函数用于计算文本字符串中的字符数。它的语法如下。 LEN(text) 其中,text是要计算字符数的文本字符串。 例如,如果你想计算单元格A1中文本的字符数,可以使用以下公式: A2len(a1) 结果将返回单元格A1中文…...
小白备战大厂算法笔试(八)——搜索
搜索 二分查找 二分查找是一种基于分治策略的高效搜索算法。它利用数据的有序性,每轮减少一半搜索范围,直至找到目标元素或搜索区间为空为止。 Question: 给定一个长度为n的数组 nums ,元素按从小到大的顺序排列,数组…...
〔022〕Stable Diffusion 之 生成视频 篇
✨ 目录 🎈 视频转换 / mov2mov🎈 视频转换前奏准备🎈 视频转换 mov2mov 使用🎈 视频转换 mov2mov 效果预览🎈 视频无限缩放 / Infinite Zoom🎈 视频无限缩放 Infinite Zoom 使用 🎈 视频转换 /…...
网络安全深入学习第三课——热门框架漏洞(RCE—Struts2远程代码执行)
文章目录 一、Struts2框架介绍二、Struts2远程代码执行漏洞三、Struts2执行代码的原理四、Struts2框架特征五、漏洞手工POC六、漏洞工具复现 一、Struts2框架介绍 ------ Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴、京东等互联网、政府、企业门户网…...
【uni-app】
准备工作(Hbuilder) 1.下载hbuilder,插件使用Vue3的uni-app项目 2.需要安装编译器 3.下载微信开发者工具 4.点击运行->微信开发者工具 5.打开微信开发者工具的服务端口 效果图 准备工作(VScode) 插件 uni-cr…...
Pytorch 多卡并行(3)—— 使用 DDP 加速 minGPT 训练
前文 并行原理简介和 DDP 并行实践 和 使用 torchrun 进行容错处理 在简单的随机数据上演示了使用 DDP 并行加速训练的方法,本文考虑一个更加复杂的 GPT 类模型,说明如何进行 DDP 并行实战MinGPT 是 GPT 模型的一个流行的开源 PyTorch 复现项目ÿ…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)
漏洞概述 漏洞名称:Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号:CVE-2023-25194 CVSS评分:8.8 影响版本:Apache Kafka 2.3.0 - 3.3.2 修复版本:≥ 3.4.0 漏洞类型:反序列化导致的远程代…...


