JavaScriptDOM(六)鼠标事件

一、鼠标事件的常用方法

鼠标是计算机的一种输入设备,也是计算机显示系统纵横坐标定位的指示器,所以鼠标事件是Web开发中最常用的一类事件。常见的鼠标事件如下表所示:

事件名称

事件触发时机

onclick

单击鼠标左键时触发

onfocus

获得鼠标指针焦点触发

onblur

失去鼠标指针焦点触发

onmouseover

鼠标指针经过时触发

onmouseout

鼠标指针离开时触发

onmousedown

当按下任意鼠标按键时触发

onmouseup

当释放任意鼠标按键时触发

onmousemove

在元素内当鼠标指针移动时持续触发

1、禁止鼠标右击菜单

contextmenu主要控制应该何时显示上下文菜单,主要应用于程序员取消默认的上下文菜单,示例代码如下。

document.addEventListener('contextmenu', function (e) {
  e.preventDefault();
})

2、禁止鼠标选中

selectstart事件是鼠标开始选择文字时就会触发,如果禁止鼠标选中,需要禁止该事件的默认行为,示例代码如下。

document.addEventListener('selectstart', function (e) {
  e.preventDefault();
})

二、鼠标事件对象

鼠标事件对象MouseEvent,是跟鼠标事件相关的一系列信息的集合,可以用来获取当前鼠标的位置信息,鼠标事件位置属性如下表所示。

位置属性(只读)

描述

clientX

鼠标指针位于浏览器页面当前窗口可视区的水平坐标(X轴坐标)

clientY

鼠标指针位于浏览器页面当前窗口可视区的垂直坐标(Y轴坐标)

pageX

鼠标指针位于文档的水平坐标(X轴坐标),IE 6~IE 8不兼容

pageY

鼠标指针位于文档的垂直坐标(Y轴坐标),IE 6~IE 8不兼容

screenX

鼠标指针位于屏幕的水平坐标(X轴坐标)

screenY

鼠标指针位于屏幕的垂直坐标(Y轴坐标)

IE 6~IE 8浏览器中不兼容pageX和pageY属性,在项目开发时需要对IE 6~IE 8浏览器进行兼容处理,示例代码如下所示。

var pageX = event.pageX || event.clientX + 
(document.body.scrollLeft ||
 document.documentElement.scrollLeft)
var pageY = event.pageY || event.clientY + 
(document.body.scrollTop ||
 document.documentElement.scrollTop)

三、案例(图片跟随鼠标移动)

案例需求:简单实现图片跟随鼠标移动的效果(不考虑兼容性)。

案例分析:需要使用鼠标指针移动事件mousemove,每次鼠标移动,都会获得最新的鼠标指针坐标,把这个x和y坐标作为图片的top和left 值就可以实现图片的移动。

1、编写代码

<style>
  img { // 给img图片设置定位
    position: absolute;
    top: 2px;
  }
</style>
<body>
  <img src="images/angel.gif" alt="">// 需要移动的图片
</body>

2、编写JS逻辑代码

<script>
    var pic = document.querySelector('img');
    document.addEventListener('mousemove', function(e) {
      var x = e.pageX;     // 获取鼠标的X坐标
      var y = e.pageY;     // 获取鼠标的Y坐标
      pic.style.left = x - 50 + 'px'; 
      pic.style.top = y - 40 + 'px'; 
    });

浏览器预览效果如下图所示:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值