【问题标题】:Two navbars generated from vue-router, active-class highlighting only one linkvue-router生成的两个navbar,active-class只高亮一个链接
【发布时间】:2018-07-15 08:57:13
【问题描述】:

我有两个部分的导航是这样的:

<ul class="navigation-list">
  <li v-for="(route, index) in navRoutes">
    <router-link :to="route.path">
      <span>{{ route.name }}</span>
    </router-link>
  </li>
</ul>

然后:

<div class="burger-navbar" v-show="showBurgerMenu">
    <ul>
      <li v-for="(route, index) in navRoutes" @click="closeBurger">
        <router-link :to="route.path">
          <span>{{ route.name }}</span>
        </router-link>
      </li>
    </ul>
</div>

在我的 CSS 中,我声明了 .router-link-active{ color: white;}。 我期望的是当我访问带有 url 的页面时,例如'/about',然后关于链接是白色的。会发生什么 - 只有第二个导航中的链接正在改变它的颜色。第一个仍然是黑色的。 如何一次将 router-link-active 类应用于两个导航?我使用两个导航栏的原因 - 一个用于普通视图,一个用于 RWD(汉堡下拉菜单) 谢谢。

【问题讨论】:

    标签: javascript css vue.js vue-router


    【解决方案1】:

    您可以考虑重构代码并使用 scss 根据视口大小更改路由器链接的样式。这样,您只需要一组路由器链接,活动的链接就会正确突出显示

    例如

    .my-menu-style {
      // burger style menu here
      @include media-min($breakpoint-medium) { 
        //menu style normal menu
      }
      
    
    } 

    另外,您使用的 v-show 只是隐藏了 DOM 中的代码,您可能会发现如果您使用 v-if 在汉堡菜单和普通菜单之间切换,它可以解决您的问题,因为这实际上添加了 abd 删除了 html来自 DOM。然后,您的 html 中一次只有一组路由器链接

    【讨论】:

      猜你喜欢
      • 2017-02-02
      • 2013-10-21
      • 2017-10-09
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 2017-10-30
      相关资源
      最近更新 更多