8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

页面加载和返回路线时路口观察器未触发

happymappy 1月前

20 0

我使用 VueUse 中的 useIntersectionObserver 在元素进入视口时触发淡入动画。如果我导航到另一个页面(例如,单击轮播中的某个项目以查看其详细信息),则会出现以下情况:

我使用 useIntersectionObserver VueUse 在元素进入视口时触发淡入动画。如果我导航到另一个页面(例如,单击轮播中的项目以查看其详细信息),然后返回到具有保存位置的上一个路线,则交叉点观察器不会自动触发,并且除非我向下和向上滚动页面或刷新页面,否则元素将保持隐藏状态。此外,如果我滚动到轮播,单击轮播项目并导航到另一条路线,观察器有时也会无法触发。因此,这不仅是返回路线时的问题,而且在滚动和导航到另一条路线后也会出现问题。

为了在观察器激活之前隐藏元素,我使用了 invisible 包含 visibility: hidden 和 的 opacity: 0 。问题似乎是交叉点观察器在 visibility: hidden 应用时没有检测到元素,因此返回页面时淡入动画永远不会启动。

演示: https://www.veed.io/view/e380440b-c04a-4508-a397-6448ac08a5d9?panel=share ?panel=share 。在这里,我导航到 /details 路线,然后返回并重新加载页面。

观察者.vue:

<template>
    <div ref="observerRef">
        <slot :isVisible="isVisible" />
    </div>
</template>

<script setup>
import { useIntersectionObserver } from '@vueuse/core';

const props = defineProps({
    rootMargin: {
        type: String,
        default: '0px',
    },
});

const observerRef = ref(null);
const isVisible = ref(false);

const { stop } = useIntersectionObserver(
    observerRef,
    ([{ isIntersecting }]) => {
        if (isIntersecting) {
            isVisible.value = isIntersecting;
            stop();
        }
    },
    {
        rootMargin: props.rootMargin,
    }
);
</script>

我使用交叉观察器的组件:

<ItemObserver v-slot="{ isVisible }">
    <div :class="isVisible ? 'fade-in' : 'invisible'">
        <CarouselContent>
            <CarouselItem v-for="item in 8" :key="item">
                <NuxtLink
                    to="/">
                    Link
                </NuxtLink>
            </CarouselItem>
        </CarouselContent>
    </div>
</ItemObserver>

CSS:

@keyframes fadeIn {
    from {
        visibility: hidden;
        opacity: 0;
    }
    to {
        visibility: visible;
        opacity: 1;
    }
}

.fade-in {
    visibility: hidden;
    opacity: 0;
    animation: fadeIn 0.3s cubic-bezier(0.5, 0, 0.5, 1) forwards;
}
.invisible {
    visibility: hidden;
    opacity: 0;
}

寻找可能的解决方案。

帖子版权声明 1、本帖标题:页面加载和返回路线时路口观察器未触发
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由happymappy在本站《vue.js》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 当您点击离开或点击返回时,所有状态都会重置。这是一片空白。您可以使用 onLoad 事件,但我不知道您如何确定您需要什么。

返回
作者最近主题: