vue-cli(Vue-Router)动态设置name属性左右切换

vue-cli(Vue-Router)动态设置name属性左右切换 路由元信息 在路由配置中meta可以配置一些数据,用在路由信息对象中,访问meta中数据: $route.met…

vue-cli(Vue-Router)动态设置name属性左右切换

路由元信息

在路由配置中meta可以配置一些数据,用在路由信息对象中,访问meta中数据: $route.meta

mode过度模式属性

in-out

新元素先进行过渡,完成之后当前元素过渡离开

out-in

当前元素先进行过渡,完成之后新元素过渡进入(常用的方式)

动态设置name属性左右切换

index.js中的路由中
1
2
3
4
5
6
7
8
      {
      path: '/search',
      name: 'Search',
      meta:{
        index:3     //给每一个路由添加唯一的标识,目前添加表示是手动添加的
      },
      component: Search
    }
#app中
1
2
3
4
5
6
            <!-- 手动设置下标 ,现在这个是手动设置的,在route(路由)中-->
            {{$route.meta.index}}
            <transition :name="names" >
                   <router-view/>
            </transition>
            <!-- name="left" 设置之后,vue就会找left前缀,然后替换   mode是用来切换动画的显示顺序的 -->
export default中
1
2
3
4
5
6
7
8
9
10
  watch:{      //监听变化
    //目标导航下标,离开导航的下标
   $route(to,from){
    if (to.meta.index<from.meta.index) {    //如果当前的路由比上一个路由的meta大,说明是向右移动,反之相反
        this.names="left";
    }else{
        this.names="right";
    }
   }
  },
app.vue中的css样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<style>
.v-enter {
    opacity: 0;
}

.v-enter-to {
    opacity: 1;
}
.v-enter-active{
    transition:1s;
}
.v-leave {
    opacity:1;
}

.v-leave-to {
    opacity:0;
}

.v-leave-active {
    transition:2s;

}
.left-enter {
    transform:translateX(100%);
}
.left-enter-to,.left-leave-active {
    transform:translateX(0);
}
.left-enter-active,.right-leave-to {
    transition:1s;
}

.left-leave {
    transform:translateX(100%);
}
.left-leave-to {
    transform:translateX(-100%);
}

.right-enter {
    transform:translateX(-100%);
}

.right-leave-to {
    transform:translateX(100%);
}
</style>

作者: huanggr

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注