VueJS 过渡取决于链接是在导航栏中的当前链接之后还是之前

年度审核

我正在使用 VueJS 创建一个 SPA 并在我转到另一条路线(例如通过导航栏)时对内容进行转换。

此时当前内容向左滑动,新内容从右侧进入。

现在我想检测内容是应该从左还是从右滑入,具体取决于:导航栏中链接的位置是在当前路线之前还是之后。

例如,我有一个包含以下项目的导航栏:
HomeReferencesContact

当我在References页面上并单击Contact 时,内容应该从右侧进入。但是当我点击Home 时,内容应该从左边进来。

你将如何实施?

非常感谢您提前!<3

<template>
    <div>
        <Header/> // header will not change

        <transition name="slide">
            <router-view></router-view> // here comes the new content
        </transition>

        <Footer/> // footer will not change
    </div>
</template>
.slide-enter-active {
    transition: all .3s ease-out .35s;
}
.slide-leave-active {
    transition: all .2s ease-in;
}
.slide-enter {
    transform: translateX(100%);
}
.slide-leave-to {
    transform: translateX(-100%);
}
大卫·皮

您可以在路由中添加带有“顺序”概念的元字段。

const router = new VueRouter({
  routes: [
    {
      path: ...,
      component: ...,
      children: [
        {
          path: 'link1',
          component: linkOne,
          // a meta field
          meta: { order: 1 }
        },
        {
          path: 'link2',
          component: linkTwo,
          // a meta field
          meta: { order: 2 }
        },
        {
          path: 'link3',
          component: linkThree,
          // a meta field
          meta: { order: 3 }
        }
      ]
    }
  ]
})

您必须为转换名称使用变量/方法:

<transition :name="transitionName"></transition>

然后,根据当前路由和目标路由的顺序,您可以确定应用哪个转换并将其存储在 transitionName 变量中。(您可以使用 访问元数据this.$route.meta

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章