代码之家  ›  专栏  ›  技术社区  ›  JeanValjean

Bulma navbar和VueJS路由器活动链接

  •  0
  • JeanValjean  · 技术社区  · 7 年前

    我已经开始使用 . 现在,我使用的是Vue路由器组件,我想让导航栏中的按钮设置为活动,无论何时我在链接所代表的“页面”上。

    我的代码如下

    <template>
        <div id="app">
            <nav class="navbar" role="navigation" aria-label="main navigation" id="nav">
                <div class="container">
                    <div id="navMenu" class="navbar-menu">
                        <div class="navbar-end">
                            <a class="navbar-item is-active">
                                <router-link to="/" exact>Home</router-link>
                            </a>
                            <a class="navbar-item">
                                <router-link to="/about" exact>About</router-link>
                            </a>
                            <a class="navbar-item">
                                <router-link to="/project" exact>Project</router-link>
                            </a>
                        </div>
                        <div class="navbar-end">
                        </div>
                    </div>
                </div>
            </nav>
    
            <router-view/>
    
        </div>
    </template>
    

    router-link-active 标记活动链接。但Bulma可能需要 is-active 类应用于当前按钮。

    我应该如何实现自动化?我已经读过了,也许我应该把这个班绑起来 处于活动状态 路由器链接激活

    let routes = ...
    
    new VueRouter({
      mode: "history",
      routes,
      linkActiveClass: "is-active"
    });
    

    但没有起作用。

    任何暗示都非常感激。

    2 回复  |  直到 7 年前
        1
  •  4
  •   Danijel    7 年前

    你在正确的轨道上,是正确的,“是积极的”是答案。在路由器中添加。

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

    <nav class="navbar is-white">
            <div class="container">
                <div id="navMenu"
                     class="navbar-menu">
                    <div class="navbar-start">
                        <router-link :to="{ name: 'templateInfo' }"
                                     class="navbar-item">Template info</router-link>
                        <router-link :to="{ name: 'thirdpartylibraries' }"
                                     class="navbar-item">Third party libraries</router-link>
                    </div>
                </div>
            </div>
        </nav>
    

        2
  •  1
  •   Sphinx    7 年前

    检查 Bulma Guide , is-active

    大多数Bulma元素都有不同的样式。要应用它们,您只需 需要附加一个修饰符类。 is- has-

    所以把配置改成喜欢 linkActiveClass: 'tag is-active' 它会工作得很好。

    下面的演示使用 tag box button 等等):

    let UserView = Vue.component('user', {
      template: '<div>I am User</div>'
    })
    
    let AdminView = Vue.component('admin', {
      template: '<div>I am Admin</div>'
    })
    
    const router = new VueRouter({
      linkActiveClass: 'tag is-active',
      routes: [
        {
          path: '/Admin',
          name: 'Admin',
          component: AdminView
        },
        {
          path: '/User',
          name: 'User',
          component: UserView
        }
      ]
    })
    Vue.use(VueRouter)
    app = new Vue({
      el: "#app",
      router
    })
    .loading {
      background-color:red;
      font-weight:bold;
    }
    <link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" rel="stylesheet"/>
    <script src="https://unpkg.com/vue@2.5.16/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <div id="app">
        <h2>Test Vue Router</h2>
        <router-link to="Admin">Admin</router-link>
        <router-link to="User">User</router-link>
        <router-view></router-view>
    </div>