javascript - 鼠标悬停时获取正确的 x 和 y 坐标

标签 javascript html vue.js

<div 
v-for="day in week.days"
        :key="day.timestamp"

        @mouseover="selectDate($event,day)">
</div>

            <div v-show="displayEvents.length!=0" ref='eventList'
     style= "
     background:red; 

     height:min-content;
      width:200px; 
      position:absolute; "
      >
      {{displayEvents}}
    </div>


    <script>
     selectDate: function(event, day) {

      this.$refs.eventList.style.top = event.clientY + "px";
      this.$refs.eventList.style.left = event.clientX + "px";

    },
    </script>

enter image description here

出于某种原因,每当我将鼠标悬停在所选日期上时,该框仅显示在页面的左上角,但是我想要实现的目标是实际精确地显示光标指针所在的框,所以在我的情况下会位于以绿色突出显示的日期(12 日)顶部,就像普通的工具提示一样。

最佳答案

clientXclientY 不是 css 规则。您必须分别使用 lefttop

像这样:

<div
    v-show="displayEvents.length!=0"
    ref="eventList"
    style="
        background:red; 
        height:50px;
        width:200px; 
        position:absolute;"
>
</div>

<script>
    document.addEventListener('mouseover', event => {
        this.$refs.eventList.style.top = event.clientY + "px";
        this.$refs.eventList.style.left = event.clientX + "px";
    })
</script>

请注意,div 的位置将相对于 position:relative 的第一个祖先元素,或者,如果没有找到这样的祖先,则相对于 body 元素。

编辑:我发现您编辑了代码以使用topleft。只要您的代码由正确的事件执行,它就应该可以工作。

关于javascript - 鼠标悬停时获取正确的 x 和 y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51402343/

相关文章:

javascript - 如何使用jquery组合两个字段以在下拉菜单中显示为选项?

javascript - react native 抽屉导航在按钮单击时不起作用

javascript - 由列表(<ul>,<li>)制成的表格,如何选择一行? (:nth-child())?

html - 如何使浏览器选项卡中的图标和标题居中

javascript - 从 child 向 parent 发出的事件不起作用

vue.js - 我如何使用 ionic 模态 Controller 捕获模态 this.$emit

javascript - 翻译 vuejs 路由路径

javascript - 用普通 JS 编写的神经网络的奇怪行为

javascript - 如何通过函数的函数传递变量

javascript - 在GO中通过http请求检索网站DOM