Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何检测鼠标何时离开元素

如何检测鼠标何时离开元素
EN

Stack Overflow用户
提问于 2018-04-23 18:16:12
回答 2查看 2.2K关注 0票数 5

当鼠标移动到一个元素上时,就会触发mousemove。如何检测鼠标何时在元素外移动?换句话说,除了代码片段中的div之外,页面上的任何位置。不是在鼠标离开时,而是每当鼠标在元素之外移动时就会触发。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const div = document.querySelector('div');

div.addEventListener('mousemove', function() {
    document.body.classList.add('mouse-moving');
 });
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div {
  height: 200px;
  width: 300px;
  background-color: red;
}
.mouse-moving {
  background-color: green;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div></div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-23 18:17:14

您可以使用onmouseover和onmouseout

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const div = document.querySelector('div');

div.onmouseover = ()=> document.body.classList.add('mouse-moving');

 div.onmouseout = ()=> document.body.classList.remove('mouse-moving');
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div {
  height: 200px;
  width: 300px;
  background-color: red;
}
.mouse-moving {
  background-color: green;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div></div>

票数 5
EN

Stack Overflow用户

发布于 2018-04-23 18:22:33

您可以将mousemove事件侦听器添加到document,并检查事件目标是否是您的div:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const div = document.querySelector('div');

document.addEventListener('mousemove', function(e) {
    if(e.target !== div) {
        div.textContent = "outside the div (" + e.clientX + ", " + e.clientY + ")";
    } else {
        div.textContent = "inside the div (" + e.clientX + ", " + e.clientY + ")";
    }
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div {
  height: 200px;
  width: 300px;
  background-color: red;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div></div>

注意:如果div包含其他元素,则测试将无法工作。您必须检查目标的祖先是否是您的div:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.addEventListener('mousemove', function(e) {
    var elm;
    for(elm = e.target; elm && elm !== div; elm = elm.parentElement)
        ;

    if(elm === div) {
        // inside div
    } else {
        // outside div
    }
});

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const div = document.querySelector('div'),
      result = document.querySelector("#result");

document.addEventListener('mousemove', function(e) {
    var elm;
    for(elm = e.target; elm && elm !== div; elm = elm.parentElement)
        ;

    if(elm === div) {
        result.textContent = "inside the div (" + e.clientX + ", " + e.clientY + ")";
    } else {
        result.textContent = "outside the div (" + e.clientX + ", " + e.clientY + ")";
    }
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div {
  height: 200px;
  width: 300px;
  background-color: red;
}

div > div {
  height: 50px;
  width: 50px;
  background-color: blue;
  margin: 5px;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span id="result"></span>
<div>
  <div></div>
  <div></div>
</div>

此外,如果div的子节点在其边界之外(由于某种绝对位置或其他原因),上述方法将无法工作,您必须检查鼠标坐标是否位于div的边界矩形内。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49992462

复制
相关文章
JS怎么判断鼠标进入离开的方向?
更多内容请见原文,原文转载自:http://www.mark-to-win.com/tutorial/50910.html
马克社区
2022/07/06
4.6K0
js判断鼠标同时离开两个div
纠结了两天,憋出了个蛋,欢迎拍砖!!! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf
deepcc
2018/05/16
4.7K0
html文本框鼠标离开事件,html鼠标事件_文本框事件「建议收藏」
今天57号网络技术分享给大家介绍html鼠标事件,就是当前文本框获得焦点时,里面的原有文本清零。
全栈程序员站长
2022/11/01
5.8K0
html文本框鼠标离开事件,html鼠标事件_文本框事件「建议收藏」
C++获取鼠标位置及全局检测鼠标行为
1、获取鼠标位置(在屏幕的位置)    CPoint m_mouse;       GetCursorPos(&m_mouse); 2、 屏幕转化为客户端(控件的相对位置)& 客户端位置转化为屏幕位置       ClientToScreen(this->m_hwnd,m_mouse);  //客户端位置转化为屏幕位置       ScreenToClient(this->m_hwnd,m_mouse) ;  //屏幕转化为客户端 3、获取控件关于在屏幕的位置    CRect  rc     GetWin
Gxjun
2018/03/26
3.9K0
原生JS滚动鼠标改变元素大小
今天要分享的是运用原生JS滚动鼠标改变元素大小,效果如下: 以下是代码实现,欢迎大家复制粘贴 。 <!DOCTYPE html> <html> <head> <meta http-equiv
越陌度阡
2020/11/26
9.3K0
原生JS滚动鼠标改变元素大小
如何用JS实现网页上通过鼠标移动批量选择元素?
监测外部容器的mousedown、mousemove、mouseup事件来进行选择判断,大致dom结构如下:
房东的狗丶
2023/02/17
4.4K0
如何用JS实现网页上通过鼠标移动批量选择元素?
(五)IntersectionObserver 监听元素进入离开指定可视区域
在开发过程中,我们可能经常需要监听元素是否进入可是区域,平时我们都是监听滚动条的高度,但是这样非常消耗资源,在这里我们可以使用 IntersectionObserver 这个 api 来进行监听,使用方法如下
老怪兽
2023/02/22
2.9K0
(五)IntersectionObserver 监听元素进入离开指定可视区域
一日一技:Selenium 如何获取鼠标指向的元素?
有一个同学在Gne的群里面咨询如何通过Selenium获取当前鼠标指向的元素,在我讲了方法以后,他过了两天又来问:
青南
2022/04/07
2K0
一日一技:Selenium 如何获取鼠标指向的元素?
jquery 获取鼠标和元素的坐标点
2,获取对象元素的位置(offset()方法) var offset = obj.offset(); 获取对象元素的位置,分别是元素的top和left,调用方法是:offset.left和offset.top,可知当前对象的左部和顶部位置。
Yiiven
2022/12/15
2.4K0
python selenium 鼠标移动到指定元素,并点击对应的元素
在使用selenium 爬去网页信息的时候,我们经常会遇到这样的一个问题。就是某一关键字或者元素,必须是鼠标悬浮上,才会出现,然后才能点击。那下面,我们就用python实现这一功能。
kirin
2021/03/18
5.5K0
如何检测一个元素是否在 vector 中
可以使用头文件 <algorithm> 里的方法 std::find, #include <algorithm> #include <vector> vector<int> vec; if (std::find(vec.begin(), vec.end(), item) != vec.end()) do_this(); else do_that();
ClearSeve
2022/02/10
1.9K0
如何实现 Vue 自定义组件中 hover 事件以及 v-model
在Vue中,它会变得更复杂一些,因为我们没有内置这个功能。我们必须自己实现这些。不过别担心,工作量不是很大。
前端小智@大迁世界
2020/05/11
21K0
【Unity3D】鼠标经过物体时变颜色,离开时恢复
usingUnityEngine; usingSystem.Collections; public class MouseEvent_Color : MonoBehaviour { //物体初始颜色 private Color CubeColor; private Texture CubeTexture; private GameObject ObjCube; voidStart () { ObjCube = GameO
恬静的小魔龙
2020/03/10
1.5K0
jquery对div元素进行鼠标移动(稍稍修改下可以实现div跟随鼠标)
/* 网上找了资料都是对于event.clientX和offset().left进行了计算,但是去掉了这个计算方式,直接使用当前坐标也一样,效果都一样不太好 strHeader:标题 jquery定位字符串 strForm:窗体 jquery定位字符串 */ var isMove = false; //var x = 0; //var y = 0; //var offx = 0; //var offy = 0; function movePage(strHeader,strForm) { $(str
未来sky
2018/09/29
2.5K0
JavaScript 自定义html元素鼠标右键菜单
在触发contextmenu事件时,取消默认行为(也就是阻止浏览器显示自带的菜单),获取右键事件对象,来确定鼠标的点击位置,作为显示菜单的left和top值
授客
2019/12/10
2.5K0
JavaScript 自定义html元素鼠标右键菜单
何时使用Serverless,何时使用Kubernetes
我经常被问到的一个问题是:我应该使用Serverless还是Kubernetes来构建云原生应用程序?两种计算选项都有利有弊,这取决于您的需求,您应该选择哪种选项。
February
2018/11/23
1.7K0
怎么用css属性屏蔽鼠标事件(鼠标点击可穿透上层元素)
看到这个需求,我有点懵逼。现在的情况是只有点击日期内容框空白区域时,才会响应点击事件显示下拉日期菜单。
前端_AWhile
2019/08/29
1.8K0
JavaScript 获取鼠标及元素在页面上的位置
HTML5学堂:JavaScript获取鼠标的位置,大家会想到clientX/Y等属性,灵活的获取鼠标的位置信息,能够便于我们实现各种复杂的页面交互效果,到底还有哪些属性可以获取鼠标的位置信息?另外,还有哪些能快速获取标签在页面中的位置信息? 在书写一些“拖拽”页面交互效果,比如常见的拖拽效果、自定滚动条、放大镜等效果,都需要用到了鼠标或元素在页面上的位置信息。为了能够快速、灵活的获取鼠标位置信息,今天要带着大家来接触的不是利用clientX/Y获取鼠标的位置信息,而是利用了大家可能比较少用的两个属性lay
HTML5学堂
2018/03/13
3.5K0
JavaScript 获取鼠标及元素在页面上的位置
何时应该重构代码?如何重构代码?
日常工作中,相信大家都见过一些看见就想骂人的代码,那么今天呢,我们就来聊聊何时应该重构代码,以及如何重构代码。文章有点长,但是看完一定会有很多收获哦~
kirito-moe
2021/09/08
1.7K0
Vue 根据鼠标悬停目标元素上方显示、隐藏指定元素交互实现
Vue 根据鼠标悬停目标元素上方显示、隐藏指定元素交互实现 By:授客 开发环境 win10 element-ui "2.13.1" vue "2.6.10" 需求描述 如下,鼠标移动到左侧标签
授客
2020/06/23
3.7K0

相似问题

如何检测鼠标何时离开窗体?

40

Flex检测鼠标何时离开画布

31

使用jquery检测鼠标何时离开

50

检测鼠标何时离开窗口

33

检测鼠标何时离开视口顶部?

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文