Webappルーティングジャンプページ切り替えアニメーションについて
3360 ワード
vue内蔵コンポーネントtransitionが必要です.使い方については、vue公式ドキュメントを参照してください.https://cn.vuejs.org/v2/api/#transition次の使い方は、コードを添付し、cssを定義します.
htmlコード
min.jsで構成
注意するのは、この方法はrouterで構成する必要があります.
まとめると,ルーティング内に配置されているpagesNumの大きさを比較し,現在ルーティングされているpagesNumがジャンプルーティングのpagesNumより大きい場合は右へスライドし,逆に左へスライドする.
.slide-right-enter {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
.slide-right-leave-to {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
.slide-left-enter {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
.slide-left-leave-to {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
.slide-right-enter-active,
.slide-right-leave-active,
.slide-left-enter-active,
.slide-left-leave-active {
transition: all 310ms;
}
//
.content{
position:absolute;
top :0;
left :0;
right: 0;
bottom :0
}
htmlコード
import "./assets/styles/reset.css";
import "./assets/styles/transiation.less";
import 'amfe-flexible';
export default {
watch:{
$route(to,from){
// console.log("to" + to.meta)
this.changeRoute(to,from)
}
},
}
min.jsで構成
Vue.mixin({
data() {
return {
transitionName: ''
}
},
methods: {
changeRoute(to, from) {
if (!isNaN(from.meta.pagesNum)) {
if (to.meta.pagesNum > from.meta.pagesNum) {
this.transitionName = 'slide-left'
} else {
this.transitionName = 'slide-right'
}
}
}
},
})
注意するのは、この方法はrouterで構成する必要があります.
{
path: '/productDdetails',
redirect: '/product',
component: () =>
import ( /* webpackChunkName: "product" */ '../views/product/product_details.vue'),
children: [{
path: "",
redirect: '/product',
},
{
path: '/product',
meta:{
pagesNum: 2
},
component: () =>
import ( /* webpackChunkName: "product" */ '../views/product/product.vue'),
},
{
path: '/chainDynamics',
meta: {
pagesNum: 4
},
component: ()=>
import ( /* webpackChunkName: "chainDynamics" */ '../views/product/chainDynamics.vue')
},
{
path: '/comments',
meta: {
pagesNum: 4
},
component: ()=>
import ( /* webpackChunkName: "comments" */ '../views/product/comments.vue')
}
]
}
まとめると,ルーティング内に配置されているpagesNumの大きさを比較し,現在ルーティングされているpagesNumがジャンプルーティングのpagesNumより大きい場合は右へスライドし,逆に左へスライドする.