欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 【Vue】声明式导航-导航链接

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

2025/5/2 16:02:03 来源:https://blog.csdn.net/qq_39921135/article/details/139513884  浏览:    关键词:【Vue】声明式导航-导航链接

文章目录

  • 一、引入
  • 二、解决方案
  • 三、代码示例
  • 四、声明式导航-两个类名
    • 1)router-link-active
    • 2)router-link-exact-active

一、引入

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

需求 实现导航高亮效果

68249204474

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


二、解决方案

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

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

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

  <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属性添加高亮样式即可实现功能


三、代码示例

<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> 跳转时,自动给当前导航加了两个类名

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

68249312105


1)router-link-active

模糊匹配(用的多)

to=“/my” 可以匹配 /my /my/a /my/b …

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

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

image-20240202223312822

2)router-link-exact-active

精确匹配(exact)

to=“/my” 仅可以匹配 /my

代码示例

/* 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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词