# vue-transition-router **Repository Path**: suwenhao/vue-transition-router ## Basic Information - **Project Name**: vue-transition-router - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-20 - **Last Updated**: 2025-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vue-Transition-Router ## Install ``` yarn add vue-transition-router ``` or ```` npm install vue-transition-router ```` ## Demo [demo link](https://xiaolin1995.github.io/vue-transition-router/demo/) ## Usage ```js // router.js import Vue from "vue"; import VueRouter from "vue-router"; import transitionRouter from "vue-transition-router"; const routes = [ { path: "/", name: "Home", meta: { transition: "", // Empty string can cancel the transition. If not set, it will be the default value }, component: () => import("../views/home.vue"), }, { path: "/page2", name: "page2", meta: { // transition: "", }, component: () => import("../views/page2.vue"), children: [ { path: "page2-1", name: "page2-1", component: () => import("../views/page2-1.vue"), meta: { // transition: "", }, }, ], }, { path: "/page3", name: "page3", component: () => import("../views/page3.vue"), }, ]; let router = new VueRouter({ mode: "hash", base: process.env.BASE_URL, routes, }); export default transitionRouter(router, { forwardName: "slide-left", backName: "slide-right" }); ``` ```css .slide-right-enter-active, .slide-left-enter-active, .slide-right-leave-active, .slide-left-leave-active { box-shadow: -20px 0 20px 0px rgba(0, 0, 0, 0.1); will-change: transform; transition: all 0.3s ease-out; } .slide-left-enter-active { transform: translateX(100%); } .slide-left-enter-to { transform: translateX(0); } .slide-right-enter-active { transform: translateX(-100%); } .slide-right-enter-to { transform: translateX(0); } .slide-right-enter-from { opacity: 0; transform: translateX(-50%); } .slide-right-leave-to { z-index: 100; transform: translateX(100%); } .slide-right-leave-from { box-shadow: -20px 0 20px 0px rgba(0, 0, 0, 0.1); } .slide-left-enter-from { z-index: 100; transform: translateX(100%); box-shadow: -20px 0 20px 0px rgba(0, 0, 0, 0.1); } .slide-left-leave-to { opacity: 0.4; transform: translateX(-50%); } ``` ```html // main router ``` ```html // children router, There may be bugs with transtion ```` ```html ```