tab选项卡的布局在项目中是很常见的,在后台管理系统中左边是导航栏固定,右边是对应的页面,每次点击左边的标题,只有右面的对应页面在切换,而vue要做tab选项卡,推荐使用实现a标签的效果,然后使用实现插槽的效果,把对应的页面 “塞” 进去,具体实现看下面的案例:
vue文件
- <template>
- ? ? <div class="box">
- ? ? ? ? <!-- nav标题,路由指向 -->
- ? ? ? ?<div class="left">
- ? ? ? ? ? ?<router-link :to="item.src" v-for="(item,index) in navData" :key="index">{{item.title}}</router-link>
- ? ? ? ?</div>
- ? ? ? ?<div class="right">
- ? ? ? ? ? ?<!-- 路由跳转的位置 -->
- ? ? ? ? ? ?<router-view></router-view>
- ? ? ? ?</div>
- ? ? </div>
- </template>
- <script>
- export default {
- ? ? name:"Index",
- ? ? data(){
- ? ? ? ? return{
- ? ? ? ? ? ? navData:[
- ? ? ? ? ? ? ? ? {
- ? ? ? ? ? ? ? ? ? ? title:"title一",
- ? ? ? ? ? ? ? ? ? ? src:"/"
- ? ? ? ? ? ? ? ? },
- ? ? ? ? ? ? ? ? {
- ? ? ? ? ? ? ? ? ? ? title:"title二",
- ? ? ? ? ? ? ? ? ? ? src:"/nav2"
- ? ? ? ? ? ? ? ? },
- ? ? ? ? ? ? ? ? {
- ? ? ? ? ? ? ? ? ? ? title:"title三",
- ? ? ? ? ? ? ? ? ? ? src:"/nav3"
- ? ? ? ? ? ? ? ? }
- ? ? ? ? ? ? ]
- ? ? ? ? }
- ? ? }
- }
- </script>
- <style scoped>
- ? ? .box{
- ? ? ? ? width: 100%;
- ? ? ? ? height: 100%;
- ? ? ? ? display: flex;
- ? ? ? ? background: rgba(0,0,0,.8)
- ? ? }
- ? ? .left{
- ? ? ? ? width:200px;
- ? ? ? ? height: 100%;
- ? ? ? ? text-align: center;
- ? ? ? ? background: rgba(0,0,0,.4);
- ? ? ? ? padding: 20px;
- ? ? }
- ? ? .left a{
- ? ? ? ? text-decoration: none;
- ? ? ? ? display: block;
- ? ? ? ? margin-top: 20px;
- ? ? ? ? width: 100%;
- ? ? ? ? color: #fff;
- ? ? }
- ? ? .right{
- ? ? ? ? flex: 1;
- ? ? ? ? padding: 20px;
- ? ? ? ? color: #fff;
- ? ? }
- </style>
router.js
- import Vue from 'vue'
- import Router from 'vue-router'
- import Index from './views/Index.vue'
- import nav1 from './components/Index/nav1.vue'
- import nav2 from './components/Index/nav2.vue'
- import nav3 from './components/Index/nav3.vue'
- Vue.use(Router)
-
- export default new Router({
- //去掉#
- ? mode: 'history',
- ? base: process.env.BASE_URL,
- ? routes: [
- ? ? {
- ? ? ? path: '/',
- ? ? ? //name: 'Index',
- ? ? ? component: Index,
- ? ? ? children:[
- ? ? ? ? {
- ? ? ? ? ? path:'',
- ? ? ? ? ? name:'nav1',
- ? ? ? ? ? component:nav1
- ? ? ? ? },
- ? ? ? ? {
- ? ? ? ? ? path:'nav2',
- ? ? ? ? ? name:'nav2',
- ? ? ? ? ? component:nav2
- ? ? ? ? },
- ? ? ? ? {
- ? ? ? ? ? path:'nav3',
- ? ? ? ? ? name:'nav3',
- ? ? ? ? ? component:nav3
- ? ? ? ? }
- ? ? ? ]
- ? ? }
- ? ]
- })
注意:当在router.js中的routes中写上name: 'Index',时在控制台会有下面的警告,所以可以删掉此句。

右边要显示页面的内容
- <!-- ?nav1.vue-->
- ?? ?<template>
- ? ? <div>
- ? ? ? ? 这是nav1
- ? ? </div>
- </template>
-
-
- <!-- ?nav2.vue-->
- ?? ?<template>
- ? ? <div>
- ? ? ? ? 这是nav2
- ? ? </div>
- </template>
-
-
- <!-- ?nav3.vue-->
- ?? ?<template>
- ? ? <div>
- ? ? ? ? 这是nav3
- ? ? </div>
- </template>
效果图

简单的子路由跳转实现tab选项卡效果就实现啦
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。