vue 路由切换之淡入淡出

transition

路由跳转的淡入淡出

想让路由有过渡动画,需要在标签的外部添加标签,标签还需要一个 name 属性

1
2
3
4
<transition name="fade" mode="out-in">
/* 如果有使用 keep-alive, 需要作为抽象组件的 keep-alive,先包裹 router-view */
<router-view></router-view>
</transition>

css 过渡类名

组件过渡过程中,会有四个 CSS 类名进行切换,这四个类名与 transition 的 name 属性有关,比如 name=”fade”,会有如下四个 CSS 类名:

fade-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立刻删除。

fade-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成后移除。

fade-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立刻删除。

fade-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成后被删除。

丝滑的关键

设置过渡模式 mode

因为不设置 mode。vue 会等到新元素渲染好了,才让老元素和新元素一起参与过度动画,所以会卡!****

**<font style="color:#4D4D4D;">out-in</font>**: 当前元素先进行过渡离开,离开完成后新元素过渡进入。因为可能不同页面样式大小不同,如果先进后出,动画效果会不平稳。推荐 out-in 丝滑!

**<font style="color:#4D4D4D;">in-out</font>**: 新元素先进入过渡,完成之后当前元素过渡离开。

官方推荐平移淡入过渡的样式

1
2
3
4
5
6
7
8
9
10
11
.slide-fade-enter-active {
transition: all 0.3s ease;
}
.slide-fade-leave-active {
transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
}
.slide-fade-enter,
.slide-fade-leave-to {
transform: translateX(10px);
opacity: 0;
}

其他淡入过渡的样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.fade-enter {
opacity: 0;
}

.fade-leave {
opacity: 1;
}

.fade-enter-active {
transition: opacity 0.5s;
}

.fade-leave-active {
opacity: 0;
transition: opacity 0.5s;
}


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!