vue实现顶部导航栏以及跳转

 更新时间:2023年09月08日 14:27:16   作者:LZ可是懒大王  
这篇文章主要介绍了vue实现顶部导航栏以及跳转方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、项目结构

二、实现

1、参考Element

我们可以快速的编写一个简单的顶部导航栏

2、我们在Element的基础上

将我们的参数添加到代码中,需要注意的是,如果在父层级的index中,如果没有添加 “/”标识的话,router的自动跳转会出问题,在父层级跳到其他父层级的自层级下后,再次返回该层级,路径会直接修改后缀,从而导致跳转失败

<template>
    <div>
        <el-header>
            <div>
                <el-row style="text-align: center;min-height: 60px;">
                    <el-col :span="4">
                        <el-image
                                class="brandArea"
                                :src="brandImg"
                                :fit="fit"></el-image>
                    </el-col>
                    <el-col :span="18">
                        <el-menu
                                router="router"
                                :default-active="activeIndex"
                                :active-text-color="activeColor"
                                class="el-menu-demo"
                                style="position:static;"
                                mode="horizontal"
                                @select="handleSelect">
                            <el-row>
                                <el-col :span="4">
                                    <el-menu-item index="/home">首页</el-menu-item>
                                </el-col>
                                <el-col :span="4">
                                    <el-submenu index="/blog">
                                        <template slot="title">博客</template>
                                        <el-menu-item index="/blog/blogMain">首页</el-menu-item>
                                        <el-menu-item index="/blog/blogSelf">我的</el-menu-item>
                                    </el-submenu>
                                </el-col>
                                <el-col :span="4">
                                    <el-menu-item index="2">音乐</el-menu-item>
                                </el-col>
                                <el-col :span="4">
                                    <el-menu-item index="3" disabled>视频</el-menu-item>
                                </el-col>
                                <el-col :span="4">
                                    <el-menu-item index="4">游戏</el-menu-item>
                                </el-col>
                                <el-col :span="4">
                                    <el-menu-item index="5">社区</el-menu-item>
                                </el-col>
                            </el-row>
                        </el-menu>
                    </el-col>
                    <el-col :span="2">
                        <el-image
                                class="headArea"
                                :src="headImg"
                                :fit="fit"></el-image>
                    </el-col>
                </el-row>
            </div>
        </el-header>
    </div>
</template>
<script>
    import {
        queryToken,
    } from "@/api/base/base.js"
    import "@/css/base.css"
    export default {
        name: "homeHead",
        data(){
            return{
                fit: 'contain',
                headImg: require("@/img/headImg.jpg"),
                brandImg: require("@/img/brand_img.jpg"),
                activeIndex: '/home',
                activeColor: '#409EFF',
            }
        },
        methods: {
            getToken(){
                queryToken().then(
                    response => {
                        console.info(response);
                    }).catch(() => {
                });
            },
            handleSelect(key, keyPath) {
                console.log(key, keyPath);
            }
        }
    }
</script>

3、这是导航栏代码

这时我们就需要考虑,我们已经编写了导航栏,如何把导航栏添加到每个页面上了,一是编写公共项目,二是在每个页面上都添加头文件,显然,二我们是不考虑的,所以我们需要编写一个公共文件,或者直接使用App.vue

4、首先考虑直接使用App.vue的情况

我们先将App.vue改进下

<template>
    <div>
        <div>
            <HomeHead></HomeHead>
        </div>
        <div>
            <router-view></router-view>
        </div>
    </div>
</template>
<script>
import HomeHead from '@/views/base/homeHead'
export default {
  name: 'App',
  components: {
    HomeHead
  }
}
</script>

5、但是我们在第一步就会发现问题

登陆页以及注册页也出现了导航栏,我们肯定不希望这种情况出现的,所以我们就需要开始写路由,然后在路由中添加跳转路径,以及显示条件

6、修改路由

先在路由中添加keepAlive字段,然后修改App.vue,加入v-if

7、到这个时候我们已经完成了

一个简单的导航栏的实现,这时我们在写路由的时候是不需要填写子层级的,只需要在路径上添加对应父层级的标识即可

例如:

注:

其中的class文件我并没有添加什么特殊的,大家可以随便设置下,因为比较简单,所以代码就不上传了,等我写完整个项目后我会一步步的写出来我的项目流程的

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx同一端口部署多个前后端分离的vue项目完整步骤

    Nginx同一端口部署多个前后端分离的vue项目完整步骤

    最近做项目结构优化,前端项目都是部署在nginx上,想实现同一个端口可以访问多个前端项目,所以就有了本文,这篇文章主要给大家介绍了关于Nginx同一端口部署多个前后端分离的vue项目的相关资料,需要的朋友可以参考下
    2023-10-10
  • 解决vuex数据异步造成初始化的时候没值报错问题

    解决vuex数据异步造成初始化的时候没值报错问题

    今天小编大家分享一篇解决vuex数据异步造成初始化的时候没值报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 详解Vue中数组和对象更改后视图不刷新的问题

    详解Vue中数组和对象更改后视图不刷新的问题

    这篇文章主要介绍了Vue中数组和对象更改后视图不刷新的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab

    写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab

    前一段时间小编写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab,觉的非常实用,大家可能在做项目时会用到,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-03-03
  • Vue3+Vite项目按需自动导入配置以及一些常见问题修复

    Vue3+Vite项目按需自动导入配置以及一些常见问题修复

    Vite是一种新型前端构建工具,能够显著提升前端开发体验,下面这篇文章主要给大家介绍了关于Vue3+Vite项目按需自动导入配置以及一些常见问题修复的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • vue中el-table合并列的具体实现

    vue中el-table合并列的具体实现

    本文主要介绍了vue中el-table合并列的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Vue事件修饰符native、self示例详解

    Vue事件修饰符native、self示例详解

    这篇文章主要给大家介绍了关于Vue事件修饰符native、self的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • 关于axios配置多个请求地址(打包后可通过配置文件修改)

    关于axios配置多个请求地址(打包后可通过配置文件修改)

    这篇文章主要介绍了关于axios配置多个请求地址(打包后可通过配置文件修改),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 浅谈Vue 性能优化之深挖数组

    浅谈Vue 性能优化之深挖数组

    这篇文章主要介绍了浅谈Vue 性能优化之深挖数组,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • vue elementui tree 任意级别拖拽功能代码

    vue elementui tree 任意级别拖拽功能代码

    这篇文章主要介绍了vue elementui tree 任意级别拖拽功能代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论