最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何用vue-route实现自动判断左右翻页转场动画

来源:动视网 责编:小采 时间:2020-11-27 20:12:09
文档

如何用vue-route实现自动判断左右翻页转场动画

如何用vue-route实现自动判断左右翻页转场动画:前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作为一个组件最近公司项目比较少终于有空来记录一下自己对vue-router的一些小小的使用心得, 一
推荐度:
导读如何用vue-route实现自动判断左右翻页转场动画:前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作为一个组件最近公司项目比较少终于有空来记录一下自己对vue-router的一些小小的使用心得, 一


  前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui

因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作为一个组件

最近公司项目比较少终于有空来记录一下自己对vue-router的一些小小的使用心得,

  一般的移动端口单页应用在跳转页面时候会有相应的转场动画,比如:

  1. 从当前一级页面跳转二级页面需要展示的转场动画是一级页面向屏幕左边移动消失的同时,

   二级页面从屏幕的右边向左边移动出现。(类似翻书翻到下一页的效果)

  2. 从当前二级页面跳回一级页面需要展示的转场动画是二级页面向屏幕右边移动消失的同时,

   一级页面从屏幕的左边向右边移动出现。类似(翻书翻回到上一页的效果)

  但是出现了一个问题:如何判断当前页面和将要跳转页面之间的层级关系呢?

我的解决办法是:创建页面 (组件)时,在定义页面的router里通过设置页面的path(访问路径 )属性来区分组件之间的层级关系。

比如一个一级页面 (组件) ‘A’ 的访问路径为 ‘/A’ 。他的二级页面 ‘B’ 的访问路径为 ‘/A/B’ .

  那么在跳转页面之前,只需要比较当前页面和将要跳转到的页面的路径深度就可以动态设置转场动画了。

比如 ‘/A/B’的深度 > ‘/A’ 的深度那么 从B页面跳转到A页面就应该是 效果2:(翻书翻回到上一页的效果).

一 。首先父页面

home.vue:

 
 
 scoped
.child-view {
 position: absolute;
 width: 100%;
 height: 100%;
 transition: all .5s ease;
 -webkit-transition: all .5s ease;
 -moz-transition: all .5s ease;
}
.rightin-enter,
.leftin-leave-active {
opacity: 0;
transform: translate3d(50% 0, 0);
-webkit-transform: translate3d(50%, 0, 0);
-moz-transform: translate3d(50%, 0, 0);
}

.leftin-enter,
.rightin-leave-active {
opacity: 0;
transform: translate3d(-50% 0, 0);
-webkit-transform: translate3d(-50%, 0, 0);
-moz-transform: translate3d(-50%, 0, 0);
}

</style>

二 。其次附上我的main.js片段(用来在跳转页面之前动态设置转场动画)

  main.js:

//进入路由之前设置拦截器let noLoginList = ["login", "register", "forget", "home", "classify", "goodsDetial"];
router.routeInfo.beforeEach((to, from, next) => {
 let user = sessionStorage.getItem('user'); //如果要去登录页面
 if (noLoginList.indexOf(to.name) >= 0) { if (!user || user == '') { //未登录的状态通行 next(); return;
 } else { if (["login", "register", "forget"].indexOf(to.name) >= 0) { //已登录的状态去首页 next({
 name: 'home'
 }); return;
 } else { //已登录的状态去首页 
 next(); 
 return;
 }
 }
 } else { //去登录页面以外的页面(以下是本文关键代码)
 if (user && user != '') { //判断是否为需要缓存组件,如果是添加组件名到数组
 if (to.meta.keepAlive) {
 const toName = to.name;
 let keepLi = store.getters.getKeepAlList;
 keepLi.indexOf(toName) < 0 ? keepLi.push(toName) : '';
 store.commit('SET_KEEPALLIST', keepLi);
 } //根据路径名深度设置转场动画类型
 store.commit('SET_TRANSNA', (to.path.split('/').length < from.path.split('/').length ? 'leftin' : 'rightin'));
 next();
 } else {
 let toWhere = router.nameList.indexOf(to.name) >= 0 ? to : {name: 'home'};
 next({
 name: 'login',
 params: {
 jumpTo: {
 name: toWhere.name,
 params: toWhere.params,
 query: toWhere.query,
 },
 }
 });
 }
 }
});

文档

如何用vue-route实现自动判断左右翻页转场动画

如何用vue-route实现自动判断左右翻页转场动画:前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作为一个组件最近公司项目比较少终于有空来记录一下自己对vue-router的一些小小的使用心得, 一
推荐度:
标签: VUE vueroute vue-route
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top