vue中tab选项卡的实现思路

2020-06-14 06:31:28易采站长站整理

今天分享下vue中tab选项卡的套路,废话不多说,直接上效果图

应用场景

•不同注册和登录方式切换
•操作选项切换 如保存和取消
•后台管理系统中各菜单选项切换等
•新闻标题分类切换 如关注 推荐 热点等分类

主要思路

•点击不同 tab 获取 tab 选项卡下标并为其动态绑定一个class(选中状态时的样式)
•点击时使 tab 对应的内容下标与 tab 选项卡下标保持一致
•使用 v-show / v-if 指令控制内容显示与隐藏

代码如下


<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>tab</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<style>
html,
body {
height: 100%;
margin: 0;
padding: 0;
background-color: #58596b;
}
.active {
color: #fff;
background: #e74c3c;
}
#app {
width: 800px;
height: 400px;
margin: 100px auto;
background-color: #fff;
box-shadow: 0 1px 3px rgba(0, 0, 0, .1);
}
.menuList {
width: 800px;
height: 60px;
background-color: #33344a;
}
ul {
width: 100%;
display: flex;
list-style: none;
padding: 0;
margin: 0;
color: #717181;
font-size: 16px;
line-height: 60px;
}
ul li {
flex: 1;
text-align: center;
cursor: pointer;
}
.tabCon {
width: 700px;
margin: 0 auto;
padding: 40px 20px;
color: #999;
font-size: 14px;
background-color: #fff;
}
</style>
</head>
<body>
<div id="app">
<div class="menuList">
<ul>
<li v-for="(item,index) in list" :key="item.id" :class="{active:num==index}" @click="getNum(index)">
{{item}}
</li>
</ul>
</div>
<div class="tabCon">
<div v-for='(itemCon,index) in tabContents' v-show="index == num">
{{itemCon}}
</div>
</div>
</div>
<script>
var app = new Vue({
el: "#app",
data() {
return {
num: 0,
list: ["张三丰", "独孤求败", "周伯通"],
tabContents: [
"张三丰,名君宝,字符元,道号三丰。武林至尊,民族英雄 、内拳始祖、太极始祖、武学泰斗、龙行书法始祖张三丰集各派绝学于一身,威震武林,造诣已达炼虚合道至高极境 [1] ,元末明初真人,武当山道人,武当派始祖,正史记载宋理宗淳佑七年(1247年) 出生辽东,14岁考取文武状元,18岁担任博陵县令,(1280年)辞官出家修道,拜火龙真人为师,武林盟主张三丰时隐时现,至今行踪不定,清朝道光年间曾出现在峨眉山。",