从 router-link linkActiveClass 到自己动态配置active class

每次路由切换成功进入激活状态

在点击导航栏的时候,让被点击的那一个有背景色,其他的没有背景色?

如何做?

在路由里面设置

const router = new VueRouter({
    routes,
    linkActiveClass: 'is-active'
});
linkActiveClass: 'is-active',

然后在css里面设置

.is-active{
    background:red;
}

这样<router-link>被点击激活的时候就会被加上is-active这个class了。注意如果没有设置router-link的标签类型,会是<a>标签,<a>标签是没有宽度和高度的。那么我们需要设置成div。然后才会背景颜色的变化。

<router-link to='index' tag="li" event="mouseover">

将router-link 这样的a标签转化为li标签

这样 activeClass 就会根据路由的变化而动态添加了。

这里 还会遇到一个问题。

比如 我这里有个侧边导航栏,其中有一项是 我的钱包,路由配置为'/myWallet',从'/myWallet'页面 可以操作提现,会进入'/withdraw'提现页面,此时,路由发生变化,activeClass将随着路由的变化,从'/myWallet' 身上移到'/withdraw'上了,侧边栏的active Class 不再了。

如何 在'/myWallet' 页面,也要 '/myWallet' 这个页面的active Class 保留住呢?

或者说,我们可以自己来操控 active Class 给加的位置,并不想它随着路由的改变而改变。

这里,去掉router 文件夹下 index.js 里面的linkActiveClass: 'is-active' 的配置,不去使用这个属性。

解决思路:给'/withdraw' 加上一个路由元信息,在侧边栏去检查路由元信息,然后看是否需要给其active class

{
  path: '/myWallet',
  name: 'MyWallet',
  component: MyWallet,
  meta: { 
    requiresAuth: true,
    active: '/MyWallet'
  }
},
{
  path: '/withdraw',
  name: 'Withdraw',
  component: withdraw,
  meta: { 
    requiresAuth: true ,
    active: '/MyWallet'
  }
},

例如

<router-link tag="li" class="li-item" to="/MyWallet" :class="{'is-active':$route.meta.active === '/MyWallet'}">我的钱包</router-link>

在侧边栏的时候,会取到当前路由的this.$route.meta.active 然后跟'/MyWallet'进行判断。

这样就实现了 在 提现 或者 转账的页面的class active 会给到侧边栏的 我的钱包 身上。

当然,如果只有一个页面 对应一个active的

就不用添加 meta下面的active属性了

<router-link tag="li" class="li-item" to="/userinfo" :class="{'is-active':$route.path === '/userinfo'}">{{ $t("sidebar.PersonalInformation") }}</router-link>

只需要拿到当前的路由地址进行判断就ok

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值