首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跟踪鼠标指针

问跟踪鼠标指针
EN

Stack Overflow用户
提问于 2022-05-07 09:16:36
回答 2查看 37关注 0票数 0

我想要一段文字跟随鼠标指针,但只有当鼠标悬停在图像上时。直到现在,它的部分工作:当鼠标访问图像区域,文本块跳到鼠标指针,并保持连接到它。但不幸的是,当鼠标再次离开图像区域时,文本仍然附着在鼠标上,并在鼠标指向的地方跟随鼠标指针。相反,它应该回到它的起始位置。

相关的html:

代码语言:javascript
复制
<main id="landing">
    <div id='slider-block'>
        <img id='slider' class='my-image' src="img/my-image.jpg">
        <div class="my-text">
            Just some example text
        </div>
    </div>
</main>

和相关的CSS:

代码语言:javascript
复制
#slider-block {
    background-color: orange;
}
.my-image {
    background-color: red;
    padding: 30px;
    width: 50%;
    height: auto;
}
.my-text {
    position: absolute;
    top: 120px;
    left: 120px;
    width: 20%;
} 

.js内容:

代码语言:javascript
复制
let sliderbody = document.querySelector('#slider');
sliderbody.onmouseover = function () {
    document.addEventListener('mousemove', function (e) {
            let titleblock = document.getElementsByClassName('my-text')[0];
            titleblock.style.left = e.clientX + 'px';
            titleblock.style.top = e.clientY + 'px';
        }
    );

}

因此,问题是当鼠标离开滑块图像时,如何结束鼠标指针后面的文本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-07 10:17:43

作为一个非常简单的解决方案,您可以只感知鼠标何时离开图像,然后删除事件侦听器,这样x和y就不会被更新。

​

代码语言:javascript
复制
let sliderbody = document.querySelector('#slider');

function mousemoved(e) {
  let titleblock = document.getElementsByClassName('my-text')[0];
  titleblock.style.left = e.clientX + 'px';
  titleblock.style.top = e.clientY + 'px';
}
sliderbody.onmouseover = function() {
  document.addEventListener('mousemove', mousemoved);
}
sliderbody.onmouseout = function() {
  document.removeEventListener('mousemove', mousemoved);
}
代码语言:javascript
复制
#slider-block {
  background-color: orange;
}

.my-image {
  background-color: red;
  padding: 30px;
  width: 50%;
  height: auto;
}

.my-text {
  position: absolute;
  top: 120px;
  left: 120px;
  width: 20%;
}

.my-text.follow {}
代码语言:javascript
复制
<main id="landing">
  <div id='slider-block'>
    <img id='slider' class='my-image' src="img/my-image.jpg">
    <div class="my-text">
      Just some example text
    </div>
  </div>
</main>

​

这就把课文放在了最后的位置。

票数 0
EN

Stack Overflow用户

发布于 2022-05-07 09:28:12

如果满足您的要求,请告诉我:

HTML

代码语言:javascript
复制
<main id="landing">
  <div id='slider-block'>
      <img id='slider' width="500" class='my-image' src="https://images.unsplash.com/photo-1541363111435-5c1b7d867904?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8ZHVtbXl8ZW58MHx8MHx8&w=1000&q=80">
      <div class="my-text">
          Just some example text
      </div>
  </div>
</main>

CSS

代码语言:javascript
复制
#slider-block {
  position: relative;
  overflow: hidden;
}

.my-text {
  position: absolute;
}

JS

代码语言:javascript
复制
let sliderbody = document.querySelector('#slider');
sliderbody.onmouseover = function () {
    document.addEventListener('mousemove', function (e) {
      
            let titleblock = document.getElementsByClassName('my-text')[0];
            console.log(titleblock);
            titleblock.style.left = e.clientX + 'px';
            titleblock.style.top = e.clientY + 'px';
        }
    );

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

https://stackoverflow.com/questions/72151114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档