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

4 篇文章 0 订阅
订阅专栏

一、项目结构

        

二、实现

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

vue实现顶部菜单栏
01-18
vue实现顶部菜单栏,同一个页两个菜单按钮之间的切换 先看展示结果: 点击第一个按钮,显示内容1 点击第二个按钮,展示内容2 下上源码:注意哦,一定要代码规划,别学我(⊙o⊙) 数据标注 案
Vue实现网页版响应式顶部导航栏-------插槽-子组件-父组件
qq_45001147的博客
04-25 4111
一、先上结果图: 当屏幕缩小时的界: 二、首先我们先创建一些用到的组件,如图 二、顶部组件的相关操作(了解插槽) 1、NavBar.vue上代码: 里ul>标签放置一个插槽,用来放置多个li>标签。为什么要放插槽呢??因为在一些地方我们可能还会用到像这样模板,只是那时的li>标签内容不一样了。所以插槽就很好解决了,下次使用只需要改li>标签的内容即可 <t...
VUE写一个顶部导航栏
altersueyunsheng的博客
06-03 1万+
最近一个实验要做一个中超足球联赛的数据库设计,我打算采用springboot+vue来完成,现在是从零开始学习vue的过程,先试着写一个顶部导航栏。效果如下: 新建一个navbar的组件 首先在APP.VUE中写好header的样式 <template> <div id="app"> <header> <Navbar /> </header> </div> </template> <sc
Vue3+TypeScript项目(中)顶部导航组件
m0_65435970的博客
03-13 588
【代码】Vue3+TypeScript项目(中)顶部导航。
VueUI Day03(8.2)MintUI、Header 组件、Field 组件、Navbar 组件、脚手架项目图片的访问方式、Tabbar 组件
m0_70328115的博客
08-03 450
MintUI、Header 组件、Field 组件、Navbar 组件、脚手架项目图片的访问方式、Tabbar 组件
vue的路由滚动 切换路由之后滚动条在最上面
m0_64415782的博客
07-26 1094
如果你想自定义路由切换时的滚动行为,可以在路由配置中使用scrollBehavior函数。这个函数接收三个参数:to(目标路由对象),from(来源路由对象)和savedPosition(之前的滚动位置)。你可以根据这些参数来自定义滚动行为。在Vue中,你可以通过路由滚动行为来控制页切换时滚动条的位置。默认情况下,Vue Router会将滚动条的位置重置为顶部
Vue实战第3章:主页设计之顶部导航栏
孙君的空间站
02-01 8750
Vue实战第3章:主页设计之顶部导航栏
vue项目实现 导航栏 的方式
逆风优雅的博客
05-11 9779
实现效果: 方式一:利用router-link实现 首先:新建一个组件,将头部导航栏提取出来,使多个组件可以公用一个头部。 代码如下: <template> <div> <div class="xl-flex" style="margin-left: 560px"> <router-link class="title_change" to="/"> <div class="titleIcon1" s.
vue实现导航栏功能的方法
花生日记
06-04 5591
为此,我们使用如下代码来实现。在该代码中,我们需要先将 button.dialog-position属性设置为 true,然后在后加上一个 flag. position属性,其作用为使 button.dialog-position属性的值在 DOM中可见,这样可以使用户通过 button.dialog-position属性看到 button.dialog-position属性的值。因此,我们先在初始页添加一个子组件,如下: 接下来,我们需要给导航栏添加一些内容,以便方便我们查看。
Vue自定义网页顶部导航栏
热门推荐
京茶吉鹿的博客
04-12 1万+
veu实现网页顶部导航栏vue-routerVueRouter
vue实现顶部导航栏
呵呵的牛
03-28 9448
vue实现顶部导航栏
vue实现nav导航栏的方法
08-28
主要为大家详细介绍了vue项目nav导航栏实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
vue实现二级导航栏效果
10-16
主要为大家详细介绍了vue实现二级导航栏效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
vue实现中部导航栏布局功能
10-16
主要介绍了vue实现中部导航栏布局功能,本文图文并茂,代码实例相结合介绍的非常详细,需要的朋友参考下吧
Vue实现导航栏菜单
10-14
主要为大家详细介绍了Vue实现导航栏菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
infrared-remote-candroid studiodemo
最新发布
05-05
android studio下载
【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx
05-05
【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx
基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar
05-05
基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar
vue顶部导航栏动态实现
06-12
实现Vue顶部导航栏的动态效果,可以采用以下步骤: 1.在Vue组件中定义一个导航栏的数据对象,包括导航栏的标题、菜单项等信息; 2.使用Vue的v-for指令遍历菜单项,生成导航栏的菜单列表; 3.使用Vue的v-bind指令动态绑定导航栏的类名和样式,实现导航栏的样式变化; 4.使用Vue的事件处理机制,监听导航栏菜单的点击事件,实现导航栏菜单的交互效果; 5.使用Vue的路由机制,实现导航栏菜单与页路由的绑定,实现跳转和切换。 下是一个简单的Vue顶部导航栏动态实现的示例代码: ```html <template> <div class="navbar"> <div class="navbar-title">{{ title }}</div> <ul class="navbar-menu"> <li v-for="item in menu" :key="item.id" :class="{ active: item.active }" @click="handleClick(item)"> <a :href="item.link">{{ item.name }}</a> </li> </ul> </div> </template> <script> export default { data() { return { title: 'Vue Navigation', menu: [ { id: 1, name: 'Home', link: '/', active: true }, { id: 2, name: 'Products', link: '/products', active: false }, { id: 3, name: 'Services', link: '/services', active: false }, { id: 4, name: 'About Us', link: '/about', active: false }, { id: 5, name: 'Contact Us', link: '/contact', active: false } ] } }, methods: { handleClick(item) { this.menu.forEach(menuItem => menuItem.active = false) item.active = true // 触发路由跳转 this.$router.push(item.link) } } } </script> <style scoped> .navbar { display: flex; justify-content: space-between; align-items: center; height: 60px; background-color: #333; color: #fff; padding: 0 20px; } .navbar-title { font-size: 24px; font-weight: bold; } .navbar-menu { display: flex; justify-content: center; align-items: center; height: 100%; margin: 0; padding: 0; } .navbar-menu li { list-style: none; margin: 0 10px; padding: 0; } .navbar-menu li.active a { color: #f00; } .navbar-menu li a { color: #fff; text-decoration: none; transition: color 0.3s ease-in-out; } .navbar-menu li a:hover { color: #f00; } </style> ``` 在这个示例中,我们定义了一个navbar组件,包含了导航栏的标题和菜单项。通过v-for指令遍历菜单项,生成导航栏的菜单列表。使用v-bind指令动态绑定导航栏的类名和样式,实现导航栏的样式变化。通过事件处理机制,监听导航栏菜单的点击事件,实现导航栏菜单的交互效果。最后,通过路由机制,实现导航栏菜单与页路由的绑定,实现跳转和切换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • vue实现顶部导航栏以及跳转 11945
  • Android studio如何用GIF图作为背景 10684
  • 如何在jsp中写一个弹窗 8185
  • 支付宝企业账户单笔支付到个人账户 8057
  • 多个Filter过滤器如何确定执行先后顺序 7680

分类专栏

  • Go日常 3篇
  • C/C++ 3篇
  • vue 4篇
  • ES 3篇
  • 日常总结 40篇
  • 数据库 4篇
  • 旅游计划
  • 服务器 14篇
  • Python 15篇
  • 设计模式 4篇
  • Spring原理 1篇
  • Springboot原理 1篇
  • 算法 1篇
  • JAVA 5篇

最新评论

  • javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource

    勿忘初心1221: 厉害,牛啊牛啊表情包

  • Go语言---读取配置文件数据

    LZ可是懒大王: 这个我没有去研究,后来用go少了,不过应该是可以的

  • Go语言---读取配置文件数据

    PyGo123: 配置改了可热更吗,就是不停服能读到新配置

  • 下载Excl时出现了ArrayIndexOutOfBoundsException 数组越界现象

    LZ可是懒大王: 这个我只确定了我电脑没有这个字体,我也不知道怎么看使用的字体,问下度娘吧

  • 下载Excl时出现了ArrayIndexOutOfBoundsException 数组越界现象

    开心的面条: 怎么知道创建的时候用到哪个字体

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Golang使用qrcode生成二维码,以及生成带logo的二维码
  • Go语言---读取配置文件数据
  • Go语言---动态查询数据库
2022年3篇
2021年5篇
2020年6篇
2019年47篇
2018年42篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司大运网站优化按天扣费兴安盟网站制作价格漳州网站定制多少钱海西网站seo优化沧州百度关键词包年推广报价荷坳企业网站建设公司桐城网站推广工具多少钱龙华网页设计价格衢州百度竞价哪家好中卫关键词排名多少钱模板网站建设价格德州网站改版推荐滁州推广网站价格本溪关键词按天扣费报价滨州网站优化按天计费价格喀什建站公司百度关键词包年推广哪家好诸城百姓网标王哪家好岳阳如何制作网站多少钱坑梓企业网站设计公司厦门关键词排名包年推广多少钱呼和浩特建站报价杭州网站改版哪家好楚雄关键词排名丽江seo优化推荐三亚百搜标王多少钱庆阳seo报价吕梁企业网站改版价格黄南网站搜索优化多少钱新余外贸网站设计价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化