To make good looking Vue apps, we need to style our components.
To make our lives easier, we can use components with styles built-in.
In this article, we’ll look at how to add navigation components.
Navs
BootstrapVue comes with a b-nav component to let us add a navigation bar to our app.
For example, we can write:
<template>
<div id="app">
<b-nav>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item disabled>baz</b-nav-item>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
We have the b-nav component, which has b-nav-item components inside.
The active prop makes a nav item active.
disabled makes it grayed out and not clickable.
Tab Style
We can add the tabs prop to make the navbar look like tabs.
For instance, we can write:
<template>
<div id="app">
<b-nav tabs>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item disabled>baz</b-nav-item>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Now the active tab has lines surrounding it.
The rest is the same.
Pill Style
The pills prop makes the nav items look like buttons.
For example, we can write:
<template>
<div id="app">
<b-nav pills>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item disabled>baz</b-nav-item>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Small Size
We can make the nav items smaller than the default with the small prop:
<template>
<div id="app">
<b-nav small>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item disabled>baz</b-nav-item>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Fill
The fill prop makes the nav extends to its full width:
<template>
<div id="app">
<b-nav fill>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item disabled>baz</b-nav-item>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Justified
The justified prop lets us make nav items equal width and the nav occur al horizontal space:
<template>
<div id="app">
<b-nav justified>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item disabled>baz</b-nav-item>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Alignment
We can add the align prop to align the nav items the way we like.
The value can be left , center , or right .
For example, we can write:
<template>
<div id="app">
<b-nav align="right">
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item disabled>baz</b-nav-item>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Since we set align to 'right' , we have the nav items on the right.
Vertical Variation
The navbar can be made vertical with the vertical prop:
<template>
<div id="app">
<b-nav vertical>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item disabled>baz</b-nav-item>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Dropdowns
We can add dropdowns into the navbar.
To do that, we use the b-nav-item-dropdown component:
<template>
<div id="app">
<b-nav>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-item-dropdown text="fruit" toggle-class="nav-link-custom" right>
<b-dropdown-item>apple</b-dropdown-item>
<b-dropdown-divider></b-dropdown-divider>
<b-dropdown-item>banana</b-dropdown-item>
</b-nav-item-dropdown>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
We just put the b-nav-item-dropdown component into the b-nav and we get a dropdown displayed.
Text Content
We can add text content to a navbar with the b-nav-text component:
<template>
<div id="app">
<b-nav>
<b-nav-item active>foo</b-nav-item>
<b-nav-item>bar</b-nav-item>
<b-nav-text>text</b-nav-text>
</b-nav>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Conclusion
We can add navbars to an app with the b-nav component.
The b-nav-item is an item that’s shown inside the navbar.
We can also add dropdown and forms inside the navbar.