【Vue】声明式导航-导航链接

文章目录

一、引入

但凡说到声明式导航,都需要想到router-link

需求 实现导航高亮效果

如果使用a标签进行跳转的话,需要给当前跳转的导航加样式,同时要移除上一个a标签的样式,太麻烦!!!


二、解决方案

vue-router 提供了一个全局组件 router-link (取代 a 标签)(即导航式链接)

  • 能跳转 ,配置 to 属性指定路径(必须 ) 。本质还是 a 标签 ,to 无需 #
  • 能高亮 ,默认就会提供高亮类名,可以直接设置高亮样式

语法: <router-link to="path的值"> 发现音乐 </router-link>

vue 复制代码
  <div>
    <div class="footer_wrap">
      <router-link to="/find">发现音乐</router-link>
      <router-link to="/my">我的音乐</router-link>
      <router-link to="/friend">朋友</router-link>
    </div>
    <div class="top">
      <!-- 路由出口 → 匹配的组件所展示的位置 -->
      <router-view></router-view>
    </div>
  </div>

通过router-link自带的两个样式进行高亮

使用router-link跳转后,我们发现。当前点击的链接默认加了两个class的值 router-link-exact-activerouter-link-active

我们可以给任意一个class属性添加高亮样式即可实现功能


三、代码示例

vue 复制代码
<template>
  <div>
    <div class="footer_wrap">
      <router-link to="/find">发现音乐</router-link>
      <router-link to="/my">我的音乐</router-link>
      <router-link to="/friend">朋友</router-link>
    </div>
    <div class="top">
      <!-- 路由出口 → 匹配的组件所展示的位置 -->
      <router-view></router-view>
    </div>
  </div>
</template>

<style>
.footer_wrap a.router-link-active {
  background-color: purple;
}
</style>

四、声明式导航-两个类名

当我们使用 <router-link></router-link> 跳转时,自动给当前导航加了两个类名

单词长是为了防止和我们平时定义的类名重名


模糊匹配(用的多)

to="/my" 可以匹配 /my /my/a /my/b ...

只要是以/my开头的路径 都可以和 to="/my"匹配到

eg:不仅要匹配/discover还要匹配/discover/toplist


精确匹配(exact)

to="/my" 仅可以匹配 /my

代码示例

css 复制代码
/* 
  router-link-active 模糊匹配(更多)
  to="/find"  =>  地址栏 /find   /find/one   /find/two  ...

  router-link-exact-active 精确匹配
  to="/find"  =>  地址栏 /find  
*/
.footer_wrap a.router-link-active {
  background-color: purple;
}
相关推荐
Anlici24 分钟前
连载小说大学生课设 需求&架构
前端·javascript·后端
i源1 小时前
Java语言处理Js文件内容格式化
java·javascript
“负拾捌”2 小时前
基于NodeJs实现一个MCP客户端(会话模式和无会话模式)
javascript·ai·node.js·大模型·mcp
蒜香拿铁2 小时前
Angular【基础语法】
前端·javascript·angular.js
rookie_fly2 小时前
基于Vue的数字输入框指令
前端·vue.js·设计模式
元直数字电路验证3 小时前
ASP.NET Core Web APP(MVC)开发中无法全局配置 NuGet 包,该怎么解?
前端·javascript·ui·docker·asp.net·.net
西部森林牧歌3 小时前
Arbess零基础学习,使用Arbess+GitLab实现Vue.js项目构建并主机部署
vue.js·gitlab·arbess·tiklab devops
我有一棵树3 小时前
Vue 项目中全局样式的正确写法:不要把字体和主题写在 #app 上
前端·javascript·vue.js
龙仔CLL4 小时前
微前端乾坤vue3项目使用tinymce,通过npm,yarn,pnpm包安装成功,但是引用报错无法使用
javascript·arcgis·npm
Mountain085 小时前
解决 Node.js 启动报错:digital envelope routines 错误全记录
javascript·npm·node.js