Vue
by AJIEKCEU
HTML
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<div id="app">
<div class="container">
<ul class="nav nav-tabs nav-justified">
<li class="nav-item">
<a class="nav-link" @click.prevent="setActive('home')" :class="{ active: isActive('home') }" href="#home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" @click.prevent="setActive('profile')" :class="{ active: isActive('profile') }" href="#profile">Profile</a>
</li>
<li class="nav-item">
<a class="nav-link" @click.prevent="setActive('contact')" :class="{ active: isActive('contact') }" href="#contact">Contact</a>
</li>
</ul>
<div class="tab-content py-3" id="myTabContent">
<div class="tab-pane fade" :class="{ 'active show': isActive('home') }" id="home">Home content</div>
<div class="tab-pane fade" :class="{ 'active show': isActive('profile') }" id="profile">Profile content</div>
<div class="tab-pane fade" :class="{ 'active show': isActive('contact') }" id="contact">Contact content</div>
</div>
</div>
</div>
CSS
body {
padding: 20px 0;
}
Vue
new Vue({
el: "#app",
data: {
activeItem: 'home'
},
methods: {
isActive (menuItem) {
return this.activeItem === menuItem
},
setActive (menuItem) {
this.activeItem = menuItem
}
}
})