vue中路由激活效果

导航栏是场景的网页效果,那么在vue中导航栏一般使用<router-link>通过循环实现,然后实现的效果是点击每一个元素,跳转到对应路由,以此来显示不同的页面

那么点击元素怎么让它添加一个选中状态呢。

类似上面这样,启动网站,首页选中,然后点击 消息,消息选中呢?

如下提供2种方法:

1、class :

查看控制台,发现vue给router-link中当前点击的元素动态添加了一个class名(router-link-exact-active),当点击其他元素时又取消了这个class名,那么我们可以通过给这个class名设置样式,达到路由激活的选中效果(router-link默认是a标签,可以改为其他标签)

#nav a {
  display: block;
  color: #000;
}

#nav a.router-link-exact-active {
  color: #f60;
}

2、路由配置 :

①、在路由文件中,配置  linkExactActiveClass:"active"

// router.js


import Vue from 'vue';
import Router from 'vue-router';
// ......

Vue.use(Router);

export default new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  linkExactActiveClass:"active",        // 添加这个
  routes: [    
    {
      path: '/',
      name: 'Home',
      components: {
        routerCenter: Home,
      },
   }
 ]
});

②、在标签上添加class名 exact-active-class="active"  ,然后给class名添加样式(我这里是点击激活切换背景图)

<div class="showHeaderTitle">
        <router-link
          :to="item.url"
          :key="index"
          v-for="(item,index) in HeaderTitle"
          exact-active-class="active">
            {{item.title}}
        </router-link>
      </div>
#nav a {
  display: block;
  min-width: 131px;
  min-height: 36px;
  line-height: 36px;
  font-weight: bold;
  color: #fff;
  background: url("static/img/index/title.png") no-repeat center center;
}

#nav .active {
  color: #fff;
  background: url("static/img/index/titleCurr.png") no-repeat center center;
}

其实看上去2种方法没什么区别,第二种反而更繁琐,但是针对只有一个路由的情况,比如上述图片那种情况,就可以优先考虑使用第一种,但是如果不止一个导航栏,在路由里面还有子路由的导航选中效果,第一种就不生效,可以考虑使用第二种。

好了,如有问题,请指出,接受批评。

个人微信公众号:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏丶毛病

很庆幸此文有幸对您有帮助 ~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值