javascript - VueJS Transition取决于链接是在导航栏中的当前链接之后还是之前

标签 javascript html css vue.js transition

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

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

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

例如,我有一个包含以下元素的导航栏:
主页引用资料联系方式

当我在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 访问元数据)

关于javascript - VueJS Transition取决于链接是在导航栏中的当前链接之后还是之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748718/

相关文章:

html - 使用锁定的标题使侧边栏滚动?

javascript - 带滚动的响应式导航 DIV

javascript - FireFox 中奇怪的边框错误

JavaScript : How to write Square bracket in array element

php - ReCAPTCHA Ajax API 图像定制?

javascript - 如何获取对 Angular 2 中当前元素的引用?

java - 在 javafx 应用程序中使用 HTML5 视频标签

javascript - 如何从标题部分删除样式标签

javascript - 返回空数组或错误

html - 使 simple_form 文本字段透明