vue3 VueUse useElementVisibility 来监听某一个元素或者div是否在当前视口viewport中可见。
1、先上一个图:
2、安装@vueuse/core
pnpm add @vueuse/core
3、新建一个组件:
<script setup lang="ts">
import { ref, watch } from "vue";
import { useElementVisibility } from "@vueuse/core";
const target = ref(null);
const targetIsVisible = useElementVisibility(target);
let emit = defineEmits(["showVisible"]);
watch(targetIsVisible, (newValue) => {
if (newValue) {
emit("showVisible",newValue);
} else {
emit("showVisible",newValue);
}
});
</script>
<template>
<div ref="target">
<h1>Hello world</h1>
</div>
</template>
这里面是利用@vueuse/core提供的useElementVisibility,来监听ref=”target"的可见状态。然后我们用watch去监听这个属性的变化,然后汇报给App.vue。
4、引用刚建的组件到App.vue
这样我们就可以成功的去看这个div是不是在viewport可见范围了。
官网:
useElementVisibility | VueUse