vue编程跳转接口push 转场动画

本文介绍如何在Vue中配置子路由,并实现页面间的转场动画效果。具体包括使用children属性配置子路由,通过编程式导航触发子路由跳转,以及利用Vue的transition组件实现平滑的页面过渡动画。
  • 1.index.js 配置子路由children。
import Vue from 'vue'
import Router from 'vue-router'
import SingerDetail from 'components/singer-detail/singer-detail'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      redirect: '/recommend'
    },
    {
      path: '/singer',
      component: Singer,
      //配置子路由,加一个参数children
      children: [
        {
          //:id 以id为变量,传递一个参数,跳转到不同子路由
          path: ':id',
          component: SingerDetail
        }
      ]
    },
    {
      path: '/search',
      component: Search,
      children: [
        {
          path: ':id',
          component: SingerDetail
        }
      ]
    }
  ]
})
  • 1.Singer
<template>
  <div class='singer'>
    <list-view @select='selectSinger'></list-view>
    //需要用routeview承载子路由
    <router-view></router-view>
  </div>
</template>
<script>
  import listView from '../components/listview'
  export default{
     methods:{
       selectSinger(singer){
           //vue编程式跳转接口push
           this.$router.push({
               path:'/singer/'+singer.id
           })
       }
     },

     components:{
         listView
     }
}

</script>
<style>
    .singer{

     }
</style>
  • 2.listview (singer子组件)
<template>
  <div class='listview'>
    <ul>
      <li @click='selectItem(item)'></li>
    </ul>
  </div>
</template>
<script>
  export default{
   methods:{
      //内部把点击事件派发出去,告诉外部我被点击
      selectItem(item){
         this.$emit('select',item);   
      }
   }
}

</script>
<style>
    .listview{

     }
</style>
  • 3.singerDetail
<template>
  <transition name='slide'>
    <div class='singer-detail'></div>
  </transition>

</template>
<script>
</script>
<style>
    .singer-detail{
        position:fixed
        z-index:100
        top:0
        left:0
        right:0
        bottom:0
        background:lightgray
     }
     .slider-enter-active,.slider-leave-active{
        transition: all 0.3s
      }
      .slider-enter,.slider-leave-to{
         transform: translate3d(100%,0,0)
       }
</style>

4.push转场动画

<transition name="slide">
        <div class="chatdiv">
            <div class="back" @click="backAction"></div>
            <div class="cont">免费咨询专业医生在线解答</div>
        </div>
</transition>
<style>
.slide-enter-active,.slide-leave-active{
        transition: all 0.3s;
    }

    .slide-enter,.slide-leave-to{
        transform: translate3d(100%,0,0);
    }
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值