javascript基础从小白到高手系列一百五十:鼠标和滚轮事件

鼠标事件是Web 开发中最常用的一组事件,这是因为鼠标是用户的主要定位设备。DOM3 Events
定义了9 种鼠标事件。
 click:在用户单击鼠标主键(通常是左键)或按键盘回车键时触发。这主要是基于无障碍的考
虑,让键盘和鼠标都可以触发onclick 事件处理程序。
 dblclick:在用户双击鼠标主键(通常是左键)时触发。这个事件不是在DOM2 Events 中定义
的,但得到了很好的支持,DOM3 Events 将其进行了标准化。
 mousedown:在用户按下任意鼠标键时触发。这个事件不能通过键盘触发。
 mouseenter:在用户把鼠标光标从元素外部移到元素内部时触发。这个事件不冒泡,也不会在
光标经过后代元素时触发。mouseenter 事件不是在DOM2 Events 中定义的,而是DOM3 Events
中新增的事件。
 mouseleave:在用户把鼠标光标从元素内部移到元素外部时触发。这个事件不冒泡,也不会在
光标经过后代元素时触发。mouseleave 事件不是在DOM2 Events 中定义的,而是DOM3 Events
中新增的事件。
 mousemove:在鼠标光标在元素上移动时反复触发。这个事件不能通过键盘触发。
 mouseout:在用户把鼠标光标从一个元素移到另一个元素上时触发。移到的元素可以是原始元
素的外部元素,也可以是原始元素的子元素。这个事件不能通过键盘触发。
 mouseover:在用户把鼠标光标从元素外部移到元素内部时触发。这个事件不能通过键盘触发。
 mouseup:在用户释放鼠标键时触发。这个事件不能通过键盘触发。
页面中的所有元素都支持鼠标事件。除了mouseenter 和mouseleave,所有鼠标事件都会冒泡,
都可以被取消,而这会影响浏览器的默认行为。
由于事件之间存在关系,因此取消鼠标事件的默认行为也会影响其他事件。
比如,click 事件触发的前提是mousedown 事件触发后,紧接着又在同一个元素上触发了mouseup
事件。如果mousedown 和mouseup 中的任意一个事件被取消,那么click 事件就不会触发。类似地,
两次连续的click 事件会导致dblclick 事件触发。只要有任何逻辑阻止了这两个click 事件发生(比
如取消其中一个click 事件或者取消mousedown 或mouseup 事件中的任一个),dblclick 事件就不
会发生。这4 个事件永远会按照如下顺序触发:
(1) mousedown
(2) mouseup
(3) click
(4) mousedown
(5) mouseup
(6) click
(7) dblclick
click 和dblclick 在触发前都依赖其他事件触发,mousedown 和mouseup 则不会受其他事件影响。
IE8 及更早版本的实现中有个问题,这会导致双击事件跳过第二次mousedown 和click 事件。相
应的顺序变成了:
(1) mousedown
(2) mouseup
(3) click
(4) mouseup
(5) dblclick
鼠标事件在DOM3 Events 中对应的类型是"MouseEvent",而不是"MouseEvents"。
鼠标事件还有一个名为滚轮事件的子类别。滚轮事件只有一个事件mousewheel,反映的是鼠标滚
轮或带滚轮的类似设备上滚轮的交互。

  1. 客户端坐标
    鼠标事件都是在浏览器视口中的某个位置上发生的。这些信息被保存在event 对象的clientX 和clientY 属性中。这两个属性表示事件发生时鼠标光标在视口中的坐标,所有浏览器都支持。
    可以通过下面的方式获取鼠标事件的客户端坐标:
    let div = document.getElementById(“myDiv”);
    div.addEventListener(“click”, (event) => {
    console.log(Client coordinates: ${event.clientX}, ${event.clientY});
    });
    这个例子为
    元素指定了一个onclick 事件处理程序。当元素被点击时,会显示事件发生时
    鼠标光标在客户端视口中的坐标。注意客户端坐标不考虑页面滚动,因此这两个值并不代表鼠标在页面
    上的位置。
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值