鼠标按下事件的详解

一、鼠标按下事件的基本绑定方法

我们知道,在Web中,JavaScript通过捕捉鼠标事件唤醒用户的活动,点击鼠标就是最常见的一种事件。那么如何在JavaScript中绑定鼠标按下事件呢?
可以直接使用HTML的onclick属性:


也可以使用DOM的addEventListener方法:

button.addEventListener('click', function(){
    alert('hi');
});

但是要注意,在使用addEventListener时,需要将触发事件的对象作为第一个参数传入。

二、鼠标按下事件的三个重要参数

在了解基本绑定方法之后,我们来看看鼠标按下事件发生时会产生哪些重要参数。在JavaScript中,鼠标按下事件有三个关键的变量:

  1. event.screenX/Y:相对于整个屏幕的距离
  2. event.clientX/Y:相对于浏览器窗口的距离
  3. event.target:鼠标指针的目标

具体每个参数的含义我们来分别看一下:

1、event.screenX/Y:
screenX/Y属性返回鼠标指针相对于用户屏幕左上角的水平和垂直距离。其值大于或等于0,是整数,以屏幕左上角为基准点,其单位为像素。即使用户在屏幕上滚动了文档,该值也不会改变。

2、event.clientX/Y:
clientX/Y属性返回鼠标指针相对于文档的左上角的水平和垂直距离,单位为像素。但是有一点需要注意的是,这个位置的计算是相对于浏览器窗口而言的,因此如果文档已经滚动,浏览器窗口并不在文档的左上角,那么结果就会和event.screenX/Y的计算结果不同。

3、event.target:
当鼠标按下时,触发事件的对象称之为事件的target(目标),即活动的元素。例如,如果在页面的文本框上点击鼠标,那么鼠标事件的目标对象就是这个文本框。

三、鼠标按下事件的常见应用场景

鼠标按下事件是比较常用的事件类型,这里介绍几个常见的应用场景。

1、拖拽:
拖拽是Web开发中非常常见的应用场景,通过捕捉鼠标按下事件,记录鼠标指针相对于元素的位置差,实现元素的拖动功能。

2、画板:
通过监听鼠标按下事件、移动事件以及鼠标释放事件,可以实现一个简单的画板功能,在HTML5中还有canvas元素,可以更加方便地实现画板功能。

3、菜单:
在Web页面中,我们经常会遇到鼠标右键弹出菜单的效果。可以通过监听鼠标按下事件,判断鼠标的按钮状态,以及鼠标的位置信息,来实现自定义菜单。

这些都是鼠标按下事件的常见应用场景,读者也可以尝试这些应用场景的实现,提高自己的编程技能。

四、完整代码示例

下面是一个完整的鼠标按下事件的代码示例,包括应用场景中拖拽功能的简单实现:

HTML代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠标按下事件的示例</title>
    <style>
        #dragDiv{
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;
        }
    </style>
</head>
<body>
    <div id="dragDiv"></div>
</body>
<script>
    var objDrag = document.getElementById("dragDiv");
    objDrag.onmousedown = function(ev){
        ev = ev || event;
        var disX = ev.clientX - this.offsetLeft;
        var disY = ev.clientY - this.offsetTop;
        document.onmousemove = function(ev){
            ev = ev || event;
            objDrag.style.left = ev.clientX - disX + 'px';
            objDrag.style.top = ev.clientY - disY + 'px';
        };
        document.onmouseup = function(){
            document.onmousemove = null;
            document.onmouseup = null;
        };
        return false;
    };
</script>
</html>

原创文章,作者:DDRM,如若转载,请注明出处:https://www.506064.com/n/135575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
DDRMDDRM
上一篇 2024-10-04 00:13
下一篇 2024-10-04 00:13

相关推荐

  • 抖音外放亲妈下葬事件的背后真相

    近期,一段抖音外放亲妈下葬的视频引发广泛关注和热议。不少人对这个事件感到震惊和愤怒,认为这种行为非常不尊重亲人,触犯了社会公德和家庭道德。但是,事情真相到底是什么呢?我们有必要从多…

    编程 2025-04-28
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • cc.director.on事件监听器

    本文将从多个方面详细介绍Cocos Creator中的cc.director.on事件监听器。 一、cc.director.on的作用和用法 cc.director.on是Coco…

    编程 2025-04-27
  • opencv鼠标绘图

    本文将为您详细介绍如何使用opencv在原始图片上进行鼠标绘图。 一、准备工作 在开始绘制之前,您需要先准备好以下的工作: 1、安装opencv库,可以通过pip install …

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • C语言贪吃蛇详解

    一、数据结构和算法 C语言贪吃蛇主要运用了以下数据结构和算法: 1. 链表 typedef struct body { int x; int y; struct body *nex…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25

发表回复

登录后才能评论