【问题标题】:Bulma navbar and VueJS router active linkBulma 导航栏和 VueJS 路由器活动链接
【发布时间】:2019-02-09 21:37:03
【问题描述】:

我已经开始使用 Bulma 0.7.1VueJs 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 来标记活动链接。但 Bulma 可能需要将 is-active 类应用于当前按钮。

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

let routes = ...

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

但没有奏效。

非常感谢任何提示。

【问题讨论】:

    标签: vuejs2 bulma


    【解决方案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 或类的顺序有问题。

    【讨论】:

    • 它运行良好并通过删除不必要的标签来优化代码。谢谢。
    • 很高兴能帮上忙。
    【解决方案2】:

    检查Bulma Guideis-active是一个修饰符,你必须和bulma元素一起使用。

    大多数 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>

    【讨论】:

    • 我试图在示例中查看 Bulma CSS 类,但我看不到。我错过了什么吗?
    • 你是在说我回答中的例子吗? css 类位于创建 Vue 路由器实例的 javascript 代码中。
    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 2021-10-29
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 2019-09-27
    相关资源
    最近更新 更多