37 - 使用router-link替代a标签实现高亮

一. 声明式导航 - 导航链接

需求:实现导航高亮效果

vue-router 提供了一个全局组件 router-link (取代 a标签)

        (1).  能跳转,配置 to 属性指定路径(必须)。本质还是 a 标,to 无需 #

        (2).  能高亮,默认就会提供高亮类名,可以直接设置高亮样式

总结:

 1. router-link是什么?
        vue-router提供的全局组件,用于替换 a 标签

2. router-link怎么用?
        <router-link to="/路径值"></router-link>
        必须传入to属性,指定路由路径值

3. router-link好处?
        能跳转,能高亮(自带激活时的类名)

<template>
  <div>
    <div class="footer_wrap">
      <!-- 替换a标签 配置to属性 -->
      <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> 
<script>

export default {
  data() {
    return {

    }
  },
}
</script>
<style>
body{
  margin: 0;
  padding: 0;
}
.footer_wrap{
 position: relative;
 left: 0;
 top: 0;
 display: flex;
 width: 100%;
 text-align: center;
 background-color: #333;
 color: #ccc;
}
.footer_wrap a{
  flex:1;
  text-decoration: none;
  padding: 20px 0;
  line-height: 20px;
  background-color: #333;
  color:#ccc;
  border: 1px solid black;
}
/* router-link标签点击后会增加两个class 值,直接使用即可
   点击那个就增加那个样式 */
.footer_wrap a.router-link-active{
  background-color: purple;
}

.footer_wrap a:hover{
  background-color: #555;
}
</style>

二. 声明式导航 - 两个类名

说明:我们发现 router-link 自动给当前导航添加了 两个高亮类名

1.  router-link-active 模糊匹配(用的多)
        to="/my" 可以匹配 /my /my/a /my/b

2. router-link-exact-active 精确匹配
        to="/my" 仅可以匹配 /my
 

总结:

router-link 会自动给当前导航添加两个类名,有什么区别呢?

        router-link-active 模糊匹配(用的多)

        router-link-exact-active 精确匹配

三. 自定义匹配的类名

说明:router-link 的 两个高亮类名 太长了,我们希望能定制怎么办?

const router = new VueRouter({
    routes: [...],
    linkActiveClass : "类名1", // 配置模糊匹配的类名
    linkExactActiveClass: "类名2" // 配置精确匹配的类名
})

 

总结:

 如何自定义 router-link 的 两个高亮类名?
        linkActiveClass 模糊匹配 类名自定义
        linkExactActiveClass 精确匹配 类名自定义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们需要在一个页面中展示多个组件的时候,可以使用 Vue.js 的嵌套路由功能。嵌套路由将一个组件作为父级路由,同时在该组件中展示它的子路由组件。 在 Vue.js 中,可以使用 `router-view` 和 `router-link` 来实现嵌套路由。`router-view` 是一个路由出口,用于展示当前路由对应的组件,而 `router-link` 则是一个路由链接,用于跳转到指定的路由。 下面是一个简单的嵌套路由示例: ```html <template> <div> <h1>父级页面</h1> <ul> <li> <router-link to="/parent/child1">子页面1</router-link> </li> <li> <router-link to="/parent/child2">子页面2</router-link> </li> </ul> <router-view></router-view> </div> </template> <script> export default { name: 'Parent', components: {}, } </script> ``` 在上面的代码中,我们定义了一个父级页面组件 `Parent`,并在其中使用了 `router-link` 来跳转到子路由。同时,在父级组件中使用了 `router-view` 来展示子路由组件。 接下来,我们还需要定义子路由组件。这里我们定义了两个子路由组件 `Child1` 和 `Child2`,它们分别对应 `/parent/child1` 和 `/parent/child2` 路由路径。 ```html <template> <div> <h2>{{ title }}</h2> <p>{{ content }}</p> </div> </template> <script> export default { name: 'Child1', data() { return { title: '子页面1', content: '这是子页面1的内容', } }, } </script> ``` ```html <template> <div> <h2>{{ title }}</h2> <p>{{ content }}</p> </div> </template> <script> export default { name: 'Child2', data() { return { title: '子页面2', content: '这是子页面2的内容', } }, } </script> ``` 最后,我们需要在路由配置中声明父级路由和子路由: ```js const routes = [ { path: '/parent', name: 'Parent', component: Parent, children: [ { path: 'child1', name: 'Child1', component: Child1, }, { path: 'child2', name: 'Child2', component: Child2, }, ], }, ] ``` 在上面的路由配置中,我们声明了 `/parent` 路由作为父级路由,同时它有两个子路由 `/parent/child1` 和 `/parent/child2`。当用户访问 `/parent/child1` 或 `/parent/child2` 路由时,会分别渲染 `Child1` 和 `Child2` 组件,并在父级页面中展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值