滑鼠按下事件的詳解

一、滑鼠按下事件的基本綁定方法

我們知道,在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/zh-tw/n/135575.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
DDRM的頭像DDRM
上一篇 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

發表回復

登錄後才能評論