经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue子路由跳转实现tab选项卡效果
来源:jb51  时间:2022/3/2 13:43:28  对本文有异议

tab选项卡的布局在项目中是很常见的,在后台管理系统中左边是导航栏固定,右边是对应的页面,每次点击左边的标题,只有右面的对应页面在切换,而vue要做tab选项卡,推荐使用实现a标签的效果,然后使用实现插槽的效果,把对应的页面 “塞” 进去,具体实现看下面的案例:

vue文件

  1. <template>
  2. ? ? <div class="box">
  3. ? ? ? ? <!-- nav标题,路由指向 -->
  4. ? ? ? ?<div class="left">
  5. ? ? ? ? ? ?<router-link :to="item.src" v-for="(item,index) in navData" :key="index">{{item.title}}</router-link>
  6. ? ? ? ?</div>
  7. ? ? ? ?<div class="right">
  8. ? ? ? ? ? ?<!-- 路由跳转的位置 -->
  9. ? ? ? ? ? ?<router-view></router-view>
  10. ? ? ? ?</div>
  11. ? ? </div>
  12. </template>
  13. <script>
  14. export default {
  15. ? ? name:"Index",
  16. ? ? data(){
  17. ? ? ? ? return{
  18. ? ? ? ? ? ? navData:[
  19. ? ? ? ? ? ? ? ? {
  20. ? ? ? ? ? ? ? ? ? ? title:"title一",
  21. ? ? ? ? ? ? ? ? ? ? src:"/"
  22. ? ? ? ? ? ? ? ? },
  23. ? ? ? ? ? ? ? ? {
  24. ? ? ? ? ? ? ? ? ? ? title:"title二",
  25. ? ? ? ? ? ? ? ? ? ? src:"/nav2"
  26. ? ? ? ? ? ? ? ? },
  27. ? ? ? ? ? ? ? ? {
  28. ? ? ? ? ? ? ? ? ? ? title:"title三",
  29. ? ? ? ? ? ? ? ? ? ? src:"/nav3"
  30. ? ? ? ? ? ? ? ? }
  31. ? ? ? ? ? ? ]
  32. ? ? ? ? }
  33. ? ? }
  34. }
  35. </script>
  36. <style scoped>
  37. ? ? .box{
  38. ? ? ? ? width: 100%;
  39. ? ? ? ? height: 100%;
  40. ? ? ? ? display: flex;
  41. ? ? ? ? background: rgba(0,0,0,.8)
  42. ? ? }
  43. ? ? .left{
  44. ? ? ? ? width:200px;
  45. ? ? ? ? height: 100%;
  46. ? ? ? ? text-align: center;
  47. ? ? ? ? background: rgba(0,0,0,.4);
  48. ? ? ? ? padding: 20px;
  49. ? ? }
  50. ? ? .left a{
  51. ? ? ? ? text-decoration: none;
  52. ? ? ? ? display: block;
  53. ? ? ? ? margin-top: 20px;
  54. ? ? ? ? width: 100%;
  55. ? ? ? ? color: #fff;
  56. ? ? }
  57. ? ? .right{
  58. ? ? ? ? flex: 1;
  59. ? ? ? ? padding: 20px;
  60. ? ? ? ? color: #fff;
  61. ? ? }
  62. </style>

router.js

  1. import Vue from 'vue'
  2. import Router from 'vue-router'
  3. import Index from './views/Index.vue'
  4. import nav1 from './components/Index/nav1.vue'
  5. import nav2 from './components/Index/nav2.vue'
  6. import nav3 from './components/Index/nav3.vue'
  7. Vue.use(Router)
  8.  
  9. export default new Router({
  10. //去掉#
  11. ? mode: 'history',
  12. ? base: process.env.BASE_URL,
  13. ? routes: [
  14. ? ? {
  15. ? ? ? path: '/',
  16. ? ? ? //name: 'Index',
  17. ? ? ? component: Index,
  18. ? ? ? children:[
  19. ? ? ? ? {
  20. ? ? ? ? ? path:'',
  21. ? ? ? ? ? name:'nav1',
  22. ? ? ? ? ? component:nav1
  23. ? ? ? ? },
  24. ? ? ? ? {
  25. ? ? ? ? ? path:'nav2',
  26. ? ? ? ? ? name:'nav2',
  27. ? ? ? ? ? component:nav2
  28. ? ? ? ? },
  29. ? ? ? ? {
  30. ? ? ? ? ? path:'nav3',
  31. ? ? ? ? ? name:'nav3',
  32. ? ? ? ? ? component:nav3
  33. ? ? ? ? }
  34. ? ? ? ]
  35. ? ? }
  36. ? ]
  37. })

注意:当在router.js中的routes中写上name: 'Index',时在控制台会有下面的警告,所以可以删掉此句。

右边要显示页面的内容

  1. <!-- ?nav1.vue-->
  2. ?? ?<template>
  3. ? ? <div>
  4. ? ? ? ? 这是nav1
  5. ? ? </div>
  6. </template>
  7.  
  8.  
  9. <!-- ?nav2.vue-->
  10. ?? ?<template>
  11. ? ? <div>
  12. ? ? ? ? 这是nav2
  13. ? ? </div>
  14. </template>
  15.  
  16.  
  17. <!-- ?nav3.vue-->
  18. ?? ?<template>
  19. ? ? <div>
  20. ? ? ? ? 这是nav3
  21. ? ? </div>
  22. </template>

效果图

简单的子路由跳转实现tab选项卡效果就实现啦

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号