经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue2 中二级路由高亮问题及配置方法
来源:jb51  时间:2019/6/11 9:34:07  对本文有异议

实现效果图

 

1、项目中的图标使用的是element-ui框架中的图标,如果需要引入可以看我写的上一篇文章。

2、首先配置路由

我初始化项目的时候初始化了路由,所以打开router/index.js文件进行修改配置

router/index.js

  1. import Vue from 'vue'
  2. import Router from 'vue-router'
  3. import Home from '@/components/Home'
  4. import Game from '@/components/Game'
  5. import Bbs from '@/components/Bbs'
  6. import Me from '@/components/Me'
  7. import Nba from '@/components/Nba'
  8. import Recommend from '@/components/Recommend'

Vue.use(Router)

  1. export default new Router({
  2. mode: 'history',
  3. linkActiveClass: 'active',
  4. routes: [
  5. { path: '/', redirect: '/home' }, // 重定向到 home
  6. {
  7. path: '/home',
  8. name: 'Home',
  9. component: Home,
  10. // children path中"/home/"可以省略
  11. children: [
  12. {
  13. path: '/', // 子路由重定向
  14. redirect: 'recommend'
  15. },
  16. {
  17. path: 'recommend',
  18. name: 'recommend',
  19. component: Recommend
  20. },
  21. {
  22. path: 'nba',
  23. name: 'nba',
  24. component: Nba
  25. },
  26. {
  27. path: 'video',
  28. name: 'video',
  29. component: Nba
  30. },
  31. {
  32. path: 'entertain',
  33. name: 'entertain',
  34. component: Nba
  35. }
  36. ]
  37. },
  38. {
  39. path: '/game',
  40. name: 'Game',
  41. component: Game
  42. }, {
  43. path: '/bbs',
  44. name: 'Bbs',
  45. component: Bbs
  46. }, {
  47. path: '/me',
  48. name: 'Me',
  49. component: Me
  50. }
  51. ]
  52. })

app.vue

底部导航封装为TabBar组件,在app.vue中引入

  1. <template>
  2. <div id="app">
  3. <div :class="{router: true}">
  4. <router-view/>
  5. </div>
  6. <!-- 底部导航组件 -->
  7. <div :class="{tabbar: true}">
  8. <tab-bar></tab-bar>
  9. </div>
  10. </div>
  11. </template>
  12. <script>
  13. import TabBar from './components/Tabs'
  14. export default {
  15. name: 'App',
  16. components: {
  17. // 底部导航组件
  18. TabBar
  19. }
  20. }
  21. </script>
  22. <style scoped>
  23. #app {
  24. width: 100%;
  25. height: 100%;
  26. display: flex;
  27. flex-direction: column;
  28. }
  29. .router {
  30. flex: 1;
  31. padding: 10pt;
  32. }
  33. .tabbar {
  34. height: 30pt;
  35. padding: 10pt 0;
  36. border-top: 1pt solid #e6e6e6;
  37. background: #fbfbfb;
  38. }
  39. </style>

Tabs.vue

  1. <template>
  2. <div id="tabs">
  3. <div class="home">
  4. <!-- 点击其他tab页,再次点击home的时候,路由重定向到了recommend,注意写法 to="/home/" -->
  5. <router-link to="/home/" tag="div">
  6. <div><i class="el-icon-s-home"></i></div>
  7. <div>首页</div>
  8. </router-link>
  9. </div>
  10. <div class="game">
  11. <router-link :to="{name: 'Game'}" tag="div">
  12. <div><i class="el-icon-s-goods"></i></div>
  13. <div>比赛</div>
  14. </router-link>
  15. </div>
  16. <div class="bbs">
  17. <router-link :to="{name: 'Bbs'}" tag="div">
  18. <div><i class="el-icon-share"></i></div>
  19. <div>社区</div>
  20. </router-link>
  21. </div>
  22. <div class="me">
  23. <router-link :to="{name: 'Me'}" tag="div">
  24. <div><i class="el-icon-s-custom"></i></div>
  25. <div></div>
  26. </router-link>
  27. </div>
  28. </div>
  29. </template>
  30. <script>
  31. export default {
  32. name: 'TabBar'
  33. }
  34. </script>
  35. <style scoped>
  36. #tabs {
  37. width: 100%;
  38. display: flex;
  39. flex-direction: row;
  40. justify-content: space-around;
  41. align-items: center;
  42. text-align: center;
  43. color: #b5b5b5;
  44. }
  45. #tabs i {
  46. font-size: 18pt;
  47. }
  48. .active {
  49. color: #468dcc;
  50. }
  51. </style>

这样就添加了底部导航,然后我们配置home界面,home界面中有二级导航,而且在首页的二级导航选中的时候,需要高亮显示”首页“tab页

Home.vue

  1. <template>
  2. <div id="home">
  3. <div :class="{topbar: true}">
  4. <router-link :to="{name: 'recommend'}" tag="div">推荐</router-link>
  5. <router-link :to="{name: 'nba'}" tag="div">篮球(NBA)</router-link>
  6. <router-link :to="{name: 'video'}" tag="div">视频</router-link>
  7. <router-link :to="{name: 'entertain'}" tag="div">影视娱乐</router-link>
  8. </div>
  9. <div :class="{tabInfo: true}">
  10. <router-view/>
  11. </div>
  12. </div>
  13. </template>
  14. <script>
  15. export default {
  16. name: 'Home',
  17. data () {
  18. return {
  19. name: 'home'
  20. }
  21. }
  22. }
  23. </script>
  24. <style scoped>
  25. #home {
  26. display: flex;
  27. flex-direction: column;
  28. text-align: left;
  29. height: 100%;
  30. }
  31. .topbar {
  32. height: 26pt;
  33. font-size: 12pt;
  34. color: #343434;
  35. background: #fbfbfb;
  36. border-bottom: 1pt solid #e6e6e6;
  37. margin-bottom: 10pt;
  38. display: flex;
  39. flex-direction: row;
  40. }
  41. .topbar div {
  42. margin: 0 5pt;
  43. }
  44. .topbar span {
  45. padding-bottom: 11pt;
  46. }
  47. .active {
  48. color: #468dcc;
  49. border-bottom: 1pt solid #468dcc;
  50. font-weight: bold;
  51. }
  52. .tabInfo {
  53. flex: 1;
  54. }
  55. </style>

总结

以上所述是小编给大家介绍的vue2 中二级路由 高亮问题及配置方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

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

本站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号