vue中tab选项卡的那些套路

今天分享下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年)辞官出家修道,拜火龙真人为师,武林盟主张三丰时隐时现,至今行踪不定,清朝道光年间曾出现在峨眉山。", 
            "独孤求败,自号“剑魔”,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗手,无可奈何,惟隐居深谷,以雕为友。呜呼,生平求一敌手而不可得,诚寂寥难堪也。在小说中从未出场过,只曾在人物的口中提及。",
            "周伯通不是金大师小说中的主角,也不是塑造的最丰满、最完善的形象,更不是侠客或英雄的代表,而且就武侠小说最基本的要素-武功、武学所达到的境界来说,周伯通也不是绝顶高手,但毫无疑问,周伯通是金大师所塑造的所有人物中最有意思的一位,至少是最有意思的人物之一。"],
        }
      },

      methods: {
        getNum(index) {
          this.num = index;
        }
      }

    })
  </script>

</body>

</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,275评论 0 25
  • 主要还是自己看的,所有内容来自官方文档。 介绍 Vue.js 是什么 Vue (读音 /vjuː/,类似于 vie...
    Leonzai阅读 3,381评论 0 25
  • kamifun阅读 384评论 2 1
  • 6月3~4日 1、大量看课例,思考,琢磨~ 2、学会耐心,想发脾气时可以收敛,然后用其他方式解决问题。 3、骨子里...
    洁言洁语阅读 190评论 0 1
  • 感赏有人能够如此的相信我,这是对我人品的肯定,我想只要我真心对人别人也会随人感动。 感赏我又反复听了英师姐的课,领...
    张元玲阅读 181评论 0 0