方法一
<div id="app" class="box"> <ul class="tabs clearfix"> <li v-for="(tab,index) in tabsName"> <a href="#" class="tab-link" @click="tabsSwitch(index)" v-bind:class="{active:tab.isActive}">{{tab.name}}</a> </li> </ul> <div class="cards"> <div class="tab-card" style="display: block;">这里是HTML教程</div> <div class="tab-card">欢迎来到CSS模块</div> <div class="tab-card">嗨,这里是Vue</div> </div>
var app = new Vue({ el: "#app", data: { tabsName: [{ name: "HTML", isActive: true }, { name: "CSS", isActive: false }, { name: "Vue", isActive: false }], active: false }, methods: { tabsSwitch: function(tabIndex) { var tabCardCollection = document.querySelectorAll(".tab-card"), len = tabCardCollection.length; for(var i = 0; i < len; i++) { tabCardCollection[i].style.display = "none"; this.tabsName[i].isActive = false; } this.tabsName[tabIndex].isActive = true; tabCardCollection[tabIndex].style.display = "block"; } } })
方法二
<div id="app"> <ul> <li v-for="(item,index) in tabs" :class="{active:index == num}" @click="tab(index)">{{item}}</li> </ul> <div class="tabCon"> <div v-for='(itemCon,index) in tabContents' v-show=" index == num">{{itemCon}}</div> </div> </div>
var vm = new Vue({ el: '#app', data: { tabs: ["标题一", "标题二","标题三"], tabContents: ["内容一", "内容二","内容三"], num: 1 }, methods: { tab(index) { this.num = index; } } });
以上方法均为他人创作,如有冒犯,敬请原谅,可联系本人删除冒犯之处。