Bulma导航栏和VueJS路由器活动链接

时间:2018-09-04 20:04:18

标签: vuejs2 bulma

我已经开始使用布尔玛0.7.1 VueJs 2.5.17 。现在,我正在使用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标记活动链接。但是布尔玛可能需要将is-active类应用于当前按钮。

我该如何自动化?我读过我可能应该将类is-active绑定到router-link-active上,但是我尝试过:

let routes = ...

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

没有用。

任何提示都非常感谢。

2 个答案:

答案 0 :(得分:1)

选中Bulma Guideis-active是一个修饰符,您必须将其与bulma元素一起使用。

  

大多数布尔玛元素具有其他样式。要应用它们,您只   需要追加修饰符类之一。 它们都以开头is-或   has-

因此,将配置更改为linkActiveClass: 'tag is-active'就可以了。

就像下面使用tag的演示一样(您可以选择其他boxbutton等):

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>

答案 1 :(得分:1)

您走对了对,对,“积极”是答案。在路由器中添加。

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

并像构建HTML一样。

<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>

这对我有用,所以我想您的div或类的顺序存在一些问题。