【发布时间】:2018-08-16 09:17:42
【问题描述】:
我是 vue.js 的新手,正在尝试构建一个组件来触发一个弹出窗口,当鼠标悬停在一个元素上时该弹出窗口将跟随鼠标位置。问题是鼠标位置仅在进入/离开元素时记录,而不是每次鼠标在元素内移动时记录。我怎样才能让它正常工作?
<template>
<div>
<div class="hover" @mouseenter="mouseEnter" @mouseleave="mouseLeave"></div>
<div class="popup" v-if="popup">
<slot></slot>
</div>
</div>
</template>
<script>
export default {
data() {
return {
popup: false
}
},
methods: {
mouseEnter() {
console.log('mouseneter');
this.popup = true;
this.$el.addEventListener('mousemove', this.mouseMove());
},
mouseLeave() {
console.log('mouseleave');
this.popup = false;
this.$el.removeEventListener('mousemove', this.mouseMove());
},
mouseMove() {
console.log(event.clientX, event.clientY);
}
}
}
</script>
<style lang="scss" scoped>
.hover {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
}
.popup {
position: absolute;
top: 0;
left: 100%;
}
</style>
【问题讨论】:
标签: javascript vue.js vuejs2 vue-component