我已经开始使用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
来标记活动链接。但Bulma可能需要将is-active
类应用于当前按钮。
我应该如何自动化?我读过可能我应该将类is-active
绑定到router-link-active
,但我尝试过:
let routes = ...
new VueRouter({
mode: "history",
routes,
linkActiveClass: "is-active"
});
并没有奏效。
任何暗示都非常感激。
你走在正确的轨道上并且是对的,'is-active'就是答案。在路由器添加。
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或类的顺序存在一些问题。
检查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/[email protected]/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>