详解Vue3中的鼠标事件mousedown、mouseup和contextmenu

在这里插入图片描述

本文主要介绍Vue3中的常见鼠标事件mousedown、mouseup和contextmenu。

目录

  • 一、mousedown——鼠标按下事件
  • 二、mouseup——鼠标弹起事件
  • 三、contextmenu——页面菜单

下面是Vue 3中常用的鼠标事件mousedown、mouseup和contextmenu的详解。

一、mousedown——鼠标按下事件

mousedown事件是一个鼠标按下的事件,当鼠标的左键按下时触发。

可以在Vue 3中使用@mousedown指令或v-on指令来绑定mousedown事件。下面是一些关于如何在Vue 3中使用mousedown事件的示例代码:

<template>
  <div @mousedown="handleMouseDown">
    <!-- 内容 -->
  </div>
</template>

<script>
export default {
  methods: {
    handleMouseDown(e) {
      // 处理鼠标按下事件
      console.log('鼠标按下');
    }
  }
}
</script>

在上面的代码中,我们将@mousedown绑定到handleMouseDown方法上。当鼠标左键按下时,handleMouseDown方法会被调用,并将鼠标事件对象event作为参数传递进去。

可以在handleMouseDown方法中执行任何你想要的逻辑。比如,可以改变组件的状态、触发其他事件、调用其他方法等等。

需要注意的是,如果你想要阻止鼠标按下事件继续冒泡到其他父级元素,你可以在handleMouseDown方法中调用event.stopPropagation()方法来阻止冒泡。

另外,可能还需要监测其他的鼠标事件,比如mouseup(鼠标松开事件)和mousemove(鼠标移动事件),以实现更复杂的交互效果。

二、mouseup——鼠标弹起事件

mouseup事件与其他浏览器原生事件一样,用于在鼠标按钮被释放时触发相应的操作。

使用@mouseupv-on:mouseup指令可以在Vue模板中绑定mouseup事件。

语法示例:

<template>
  <div @mouseup="handleMouseUp">Mouse Up Event</div>
</template>

<script>
export default {
  methods: {
    handleMouseUp() {
      console.log('Mouse Up Event triggered');
    }
  }
}
</script>

在上面的示例中,当用户释放鼠标按钮时,handleMouseUp方法将被调用,并在控制台中打印出一条消息。

需要注意的是,在Vue.js 3中,事件修饰符(例如.prevent.stop)以及按键修饰符(例如.enter.space)不再内置,但可以使用Vue的自定义指令实现类似的功能。

例如,可以创建一个自定义指令来模拟@mouseup.prevent的行为:

<template>
  <div v-mouseup.prevent="handleMouseUp">Mouse Up Event with Prevent</div>
</template>

<script>
export default {
  directives: {
    mouseup: {
      mounted(el, binding) {
        el.addEventListener('mouseup', (event) => {
          if (binding.modifiers.prevent) {
            event.preventDefault();
          }
          binding.value(event);
        });
      }
    }
  },
  methods: {
    handleMouseUp(event) {
      console.log('Mouse Up Event triggered');
    }
  }
}
</script>

在上面的示例中,我创建了一个名为mouseup的自定义指令,并在mounted钩子中为目标元素添加了mouseup事件监听器。根据修饰符的存在与否,可以决定是否在事件处理程序内调用event.preventDefault()

请注意,自定义指令可能需要根据你的具体需求做一些调整和优化,上述示例仅提供一个简单的示范。

总结来说,在Vue.js 3中,mouseup事件的使用方式与原生事件相似,你可以直接在模板中绑定@mouseup指令,并在相应的方法中处理事件。

三、contextmenu——页面菜单

contextmenu事件是一个DOM事件,用于在用户在元素上点击鼠标右键时触发。它与其他鼠标事件(如clickmousedown等)不同,因为它只在鼠标右键点击时触发。

可以通过在模板中绑定contextmenu事件来监听右键点击事件,就像监听其他事件一样。例如:

<template>
  <div>
    <div @contextmenu="showContextMenu">Right-click me!</div>
    
    <ul v-show="showMenu" @blur="hideContextMenu">
      <li>Option 1</li>
      <li>Option 2</li>
      <li>Option 3</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      showMenu: false
    }
  },
  methods: {
    showContextMenu(event) {
      event.preventDefault(); // 阻止默认的上下文菜单弹出
      this.showMenu = true;
    },
    hideContextMenu() {
      this.showMenu = false;
    }
  }
}
</script>

在上面的例子中,在div元素上绑定了contextmenu事件,并通过showContextMenu方法来显示右键菜单。在showContextMenu方法中,使用event.preventDefault()来阻止浏览器默认的上下文菜单弹出,并将showMenu属性设置为true来显示自定义的右键菜单。

在右键菜单弹出后,可以通过监听其他事件(如blur)来隐藏右键菜单,blur事件在失去焦点时触发。在上面的例子中,我们在ul元素上绑定了blur事件,并通过hideContextMenu方法来隐藏右键菜单。

需要注意的是,在Vue 3中,contextmenu事件就是一个普通的DOM事件,而不是Vue提供的特殊事件。因此,我们可以在模板中直接使用@contextmenu来绑定事件,而不需要引入其他特殊的指令或插件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CloneNotSupportedException的解决方案 + Object的clone方法分析

CloneNotSupportedException的解决方案 引入问题&#xff1a; 在一次测试clone方法时&#xff0c;D类Override了Object类的clone方法 public class D {private Integer A1;private Integer A2;public D() {}public D(Integer a1, Integer a2 {A1 a1;A2 a2;}Overrideprotec…

PAT 乙级 1042 字符统计

请编写程序&#xff0c;找出一段给定文字中出现最频繁的那个英文字母。 输入格式&#xff1a; 输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成&#xff0c;至少包含 1 个英文字母&#xff0c;以回车结束&#xff08;回车不算在内…

软件测试/测试开发丨Python 内置库 sys 学习笔记分享

sys 概述 是 Python 自带的内置模块是与 Python 解释器交互的桥梁 sys 使用 常用属性常用方法导入 sys 模块 # 导入sys模块 import sys# 查看sys模块帮助文档 help(sys)# 查看sys模块的属性和方法 print(dir(sys))sys 常用属性 sys.version&#xff1a;返回 Python 解释器…

Linux基础知识学习2

tree命令的使用 可以看到dir2目录下的这些文件&#xff0c;要想显示dir2的具体结构&#xff0c;可用tree命令 mv命令 它可以实现两个功能 1.将文件移动到另一个目录中 2.对某一个文件进行重命名 1.将文件移动到另一个目录中 这里将dir1中的2.txt移动到他的子目录dir3中 执行…

虚拟化分类和实现原理

6、虚拟化分类 &#xff08;1&#xff09;完全虚拟化 直接将Hypervisor跑在0环内核态&#xff0c;客户机os跑在1环&#xff0c;一旦触发敏感指令&#xff0c;由0环的VMM进行捕获翻译&#xff0c;从而模 拟这些指令。而运行在1环的GuestOS永远都不知道自己是个虚拟机。是完全…

python统计分析——透视表

参考资料&#xff1a;用Python动手学统计学 pandas库的pivot_table函数相当于excel的透视表功能。此图为excel数据透视表字段设置窗口&#xff0c;下面将参照excel数据透视表相关设置图片学习pivot_table函数&#xff1a; 本次使用的数据集内容如下&#xff1a; import pandas…

python安装MongoDB与运算符优先级

python安装MongoDB MongoDB 是目前最流行的 NoSQL 数据库之一&#xff0c;使用的数据类型 BSON&#xff08;类似 JSON&#xff09;。 PyMongo Python 要连接 MongoDB 需要 MongoDB 驱动&#xff0c;这里我们使用 PyMongo 驱动来连接。 pip 安装 pip 是一个通用的 Python 包…

【STM32】STM32学习笔记-PWM驱动LED呼吸灯 舵机 直流电机(16)

00. 目录 文章目录 00. 目录01. 输出比较相关API1.1 TIM_OC1Init1.2 TIM_OCInitTypeDef结构体1.3 TIM_OCMode1.4 TIM_OutputState1.5 TIM_OutputNState1.6 TIM_OCPolarity1.7 TIM_OCNPolarity1.8 TIM_OCPolarity1.9 TIM_OCNPolarity 02. PWM实现呼吸灯接线图03. PWM实现呼吸灯示…

普中STM32-PZ6806L开发板(前序)

前言 突然从柜子看到七八年前买的一块普中开发板, 在诸多的例如野火、原子中当时为什么选择他, 现在来看应该还是性价比较高&#xff0c;班上集成了很多学习者的进阶模块了&#xff0c;当然&#xff0c;买完大程度就吃灰了&#xff0c;当我再次发现他的时候&#xff0c; 我看到…

独立站的营销策略:吸引顾客的秘密武器

一、独立站的重要性 独立站是指企业自主建立的电子商务网站&#xff0c;具有独立的域名和运营管理权。通过独立站&#xff0c;企业可以展示产品信息、提供在线服务、进行促销活动等&#xff0c;与顾客建立互动和信任关系。独立站的重要性在于它可以帮助企业建立品牌认知度、提…

【NTN 卫星通信】Oneweb星座以及Oneweb与Starlink比较

1 什么是OneWeb OneWeb于2012年以WorldVu的名义成立&#xff0c;于2020年开始构建其星座。然而&#xff0c;对于这家英国公司来说&#xff0c;这是一个艰难的旅程&#xff0c;OneWeb于2020年3月宣布破产&#xff0c;并认为covid-19大流行是一个主要因素。OneWeb星座当时仅完成…

trino-435: 理论基础

一、trino介绍 Trino是⼀种⽀持使⽤ SQL 访问任意数据源的 开源的分布式SQL 查询引擎&#xff0c;其能够提供更加灵活与⾼效的查询服务。为不同的异构数据源提供统⼀的sql访问&#xff0c;并⽀持联邦查询和并⾏查询。 应⽤场景 Trino是定位在数据仓库和数据分析业务的分布式S…

#前后端分离# 头条发布系统

头条业务简介 新闻的分页浏览通过标题关键字搜索新闻查看新闻详情新闻的修改和删除用户注册、登录 预览界面 开源上线 https://gitcode.net/NVG_Haru/NodeJS_5161447 数据库设计 数据库脚本 CREATE DATABASE sm_db;USE sm_db;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0…

python的pywebio库给孩子做加减法数学题

效果展示 程序执行后&#xff0c;打开浏览器&#xff0c;展示一些100以内的加减法混合运算的数学题并输入答案后判断对错&#xff0c;这样倒是省了买教材的钱了。 在题目下方的框中&#xff0c;输入答案&#xff0c;然后点击提交后&#xff0c; 会输出结果 pywebio库介绍 安装…

详解FreeRTOS:FreeRTOSConfig.h系统配置文件(拓展篇—1)

目录 1、“INCLUDE_”宏 2、“config”宏 实际使用FreeRTOS的时候,时常需要根据自己需求来配置 FreeRTOS,不同架构的MCU,配置也不同。 FreeRTOS的系统配置文件为FreeRTOSConfig.h,在配置文件中可以完成FreeRTOS的裁剪和配置,这是非常重要的一个文件,本篇博文就来讲解这…

文件批量整理,文件归类整理,文件批量归类

我们每天都要面对无数的文件&#xff0c;从工作报告、个人照片到电影和音乐。如何有效地管理和归类这些文件&#xff0c;成为了我们日常生活和工作中所要处理的。今天&#xff0c;小编就给大家介绍一款简单易用的工具——文件批量改名高手&#xff0c;助你轻松实现文件批量归类…

45、激活函数 - 为什么非线性这么重要

这一节开始讲一讲神经网络中的激活函数,在讲激活函数之前,先讲一下非线性。 看一个基础知识:线性函数的叠加,我们初中学过的知识点。 假设有一个线性函数,y = kx + b, 这个函数画出来是下面的样子,这里显示 y 和 x 是线性关系。 而如果这个时候又有一个线性关系 z = hy…

基于JAVA的独居老人物资配送系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询社区4.2 新增物资4.3 查询物资4.4 查询物资配送4.5 新增物资配送 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的独居老人物资配送系统&#xff0c;包含了社区档案、…

C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合

上一篇&#xff1a; C#&#xff0c;入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果https://blog.csdn.net/beijinghorn/article/details/123478581 C#&#xff0c;入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net…

探索 Pinia:简化 Vue 状态管理的新选择(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…