js 事件-鼠标事件

鼠标事件

鼠标事件有哪些?

  1. mousedown:鼠标按钮被按下(左键或右键)时触发。不能通过键盘触发
  2. mouseup: 鼠标按钮被释放弹起时触发。不能通过键盘触发、
  3. click: 单击鼠标左键或者按下回车键时触发。这点对确保易访问性很重要,意味着onclick事件处理程序既可以通过键盘也可以通过鼠标执行
  4. dbclick: 双击鼠标左键时触发
  5. mouseover:当鼠标指针位于元素上方时,会发生 mouseover 事件。
  6. mouseout: 当鼠标指针从元素上移开时,发生 mouseout 事件,该事件大多数时候会与 mouseover 事件一起使用。
  7. mouseenter:该事件不冒泡,当鼠标指针穿过元素时,会发生 mouseenter 事件。该事件大多数时候会与mouseleave 事件一起使用。与 mouseover 事件不同,只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。如果鼠标指针穿过任何子元素,同样会触发 mouseover 事件。
  8. mouseleave:该事件不冒泡当鼠标指针离开元素时,会发生 mouseleave 事件。该事件大多数时候会与mouseenter 事件一起使用。与 mouseout 事件不同,只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。如果鼠标指针离开任何子元素,同样会触发 mouseout 事件。
  9. mousemove: 当鼠标指针在指定的元素中移动时,就会发生 mousemove 事件。mousemove事件处理函数会被传递一个变量——事件对象,其.clientX 和 .clientY 属性代表鼠标的坐标,不能通过键盘触发

1.事件触发的顺序

通过双击按钮,看一下上面触发的事件

<body>
<input id="btn" type="button" value="click"/>
<script>
    var btn=document.getElementById("btn");
    btn.addEventListener("mousedown",function(event){
        console.log("mousedown");
    },false);
    btn.addEventListener("mouseup",function(){
        console.log("mouseup");
    },false);
    btn.addEventListener("click", function () {
        console.log("click");
    },false);
    btn.addEventListener("dblclick", function () {
        console.log("dblclick");
    },false);
</script>
</body>

2、mouseenter和mouseover的区别
区别:

mouseover事件会冒泡,这意味着,鼠标移到其后代元素上时会触发。

mouseenter事件不冒泡,这意味着,鼠标移到其后代元素上时不会触发。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
   
    <script src="jquery-2.1.1.min.js"></script>
</head>
<body>
<body>
<div id="outer">
        <div id="inner">
        </div>
</div>
</body>
<script>
var parentDiv=document.getElementById("outer");
parentDiv.addEventListener("mouseover", function () {
     console.log("父div的mouseover事件被触发");
},false);

//parentDiv.addEventListener("mouseenter", function () {
//    console.log("父div的mouseenter事件被触发");
//},false);

//parentDiv.addEventListener("mouseout", function () {
//    console.log("父div的mouseout事件被触发");
//},false);

//parentDiv.addEventListener("mouseleave", function () {
//    console.log("父div的mouseleave事件被触发");
//},false);

</script>
</body>
</html>

mouseover对应mouseout,mouseenter对应mouseleave。效果可以取消上面代码的注释来看。

jquery中hover API是把mouseenter 和mouseleave组合在一起来用的。

3、mouseover和mousemove的区别

一般情况下mouseover即可,特殊情况才用mousemove,mousemove更耗资源,比如要监控鼠标坐标的变化等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例代码,可以实现鼠标点击、松开和移动时的效果: ```html <!DOCTYPE html> <html> <head> <title>鼠标事件示例</title> <style> #box { width: 100px; height: 100px; background-color: red; position: absolute; left: 0; top: 0; } </style> </head> <body> <div id="box"></div> <script> // 获取元素 var box = document.getElementById("box"); // 定义变量,记录鼠标是否按下 var isMouseDown = false; // 添加鼠标按下事件 box.addEventListener("mousedown", function(event) { // 将变量设置为 true isMouseDown = true; // 记录鼠标按下时的位置 var x = event.clientX; var y = event.clientY; // 添加鼠标移动事件 document.addEventListener("mousemove", moveHandler); // 添加鼠标松开事件 document.addEventListener("mouseup", function() { // 将变量设置为 false isMouseDown = false; // 移除鼠标移动事件 document.removeEventListener("mousemove", moveHandler); }); // 鼠标移动事件处理函数 function moveHandler(event) { if (isMouseDown) { // 计算鼠标移动的距离 var deltaX = event.clientX - x; var deltaY = event.clientY - y; // 更新盒子的位置 box.style.left = parseInt(box.style.left) + deltaX + "px"; box.style.top = parseInt(box.style.top) + deltaY + "px"; // 更新 x 和 y 的值 x = event.clientX; y = event.clientY; } } }); </script> </body> </html> ``` 这段代码定义了一个红色的正方形盒子(100px × 100px),当鼠标按下该盒子并移动时,盒子会跟随鼠标移动。当鼠标松开时,盒子停止跟随移动。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值