- 前端vue - tab栏带滑动效果的实现

本文通过在Vue中利用transition组件,结合CSS动画,详细介绍了如何实现在切换Tab时添加滑动效果。通过监听route对象,判断路径匹配,从而触发相应带有动画效果的CSS文件,以此达到平滑的Tab切换体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在vue过渡动效transition的基础上实现主页tab切换

  • app.vue 内
<template>
  <div id="app">
       <div class="tab">
        <router-link to="/session" active-class="active">老师</router-link>
        <router-link to="/teacher" active-class="active">消息</router-link>
        <router-link to="/mine" active-class="active">我的</router-link>
        </div>
        <transition :name="transitionName">
            <router-view></router-view>    
        </transition>
  </div>
</template>
  • 监听route对象 并判断路由路径是否与所点击tab栏路径一致
watch:{
   '$route'(to,from){
     const toPath = to.path
     const fromPath = from.path
     switch(toPath){
      case '/session': sessionStorage.setItem('toPath',0); break;
      case '/teacher': sessionStorage.setItem('toPath',1); break;
      case '/mine':  sessionStorage.setItem('toPath',2); break; 
     }
     switch(fromPath){
      case '/session': sessionStorage.setItem('fromPath',0); break;
      case '/teacher': sessionStorage.setItem('fromPath',1); break;
      case '/mine':  sessionStorage.setItem('fromPath',2); break; 
     }
     let toIndex = sessionStorage.getItem('toPath')
     let fromIndex = sessionStorage.getItem('fromPath')
     this.transitionName = (toIndex>fromIndex)? 'forward' : 'backward'
   } 
  • 相应的引入写有动画过程的css文件

.forward-enter-active,.forward-leave-active{
	transition: 0.5s all ease;
	transform: translateX(0);
}
.forward-enter{
	transform: translateX(100%);
}
.forward-enter-to{
	transform: translateX(0);
}
.forward-leave {
    transform: translate3d(0, 0, 0);
}
 .forward-leave-to {
    transform: translate3d(-100%, 0, 0);
}

.backward-enter-active, .backward-leave-active {
    transition: all 0.5s;
  }
  .backward-leave {
    transform: translate3d(0, 0, 0);
  }
  .backward-leave-to {
    transform: translate3d(100%, 0, 0);
  }
  .backward-enter {
    transform: translate3d(-100%, 0, 0);
  }
  .backward-enter-to {
    transform: translate3d(0, 0, 0);
  }
  • 完成~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值