vue之tab栏切换_vue tab切换-程序员宅基地

技术标签: vue  前端  vue.js  javascript  

一个简单的tab栏切换组件,由tabs以及tab-pane组成

效果图
在这里插入图片描述

使用

<template>
  <div class="container">
    <tabs
      default-active="2"
      class="build-tabs"
    >
      <tab-pane
        label="tab栏标题1"
        index="1"
      >tab栏内容1</tab-pane>
      <tab-pane
        label="tab栏标题tab栏标题2"
        index="2"
      >
        tab栏内容2
      </tab-pane>
      <tab-pane
        label="tab栏标题"
        index="3"
      >tab栏内容3</tab-pane>
      <tab-pane
        label="标题"
        index="4"
      >tab栏内容4</tab-pane>
      <tab-pane
        label="tab栏标题3"
        index="5"
      >tab栏内容5</tab-pane>
    </tabs>
  </div>
</template>

tabs

<template>
  <div
    v-show="pans.length"
    class="tabs"
  >
    <div class="tab-title">
      <div
        v-for="(item) in pans"
        :key="item.id"
        class="item"
        :class="{ 'active': currentActive === item.index }"
        @click="changeTab(item.index)"
      >{
   { item.label }}</div>
    </div>
    <div class="tab-content">
      <slot></slot>
    </div>
  </div>
</template>

<script>
export default {
      
  props: {
      
    mode: {
      
      type: String,
      default: "horizontal/vertical"
    },
    defaultActive: {
      
      type: String | Number,
      default: '1'
    },
    defaultColor: {
      
      type: String,
      default: '#409EFF'
    }
  },
  data: () => {
      
    return {
      
      currentActive: '',
      pans: []
    }
  },
  computed: {
      

  },
  watch: {
      
    defaultActive: {
      
      handler (newVal) {
      
        this.currentActive = newVal
      },
      immediate: true
    }
  },
  mounted () {
      
  },

  methods: {
      
    changeTab (val) {
      
      this.currentActive = val
    },
  }
}
</script>
<style scoped lang="scss">
::root {
      
  --color: "#409EFF";
}
.tabs {
      
  .tab-title {
      
    display: flex;
    // align-items: flex-start;
    align-items: stretch;	// 侧边栏时,使侧栏高度与内容高度一致,按最高的显示
    margin-bottom: 14px;
    border-bottom: 1px solid #ccc;
    .item {
      
      padding: 20px;
      /* padding-bottom: 20px; */
      cursor: pointer;
      white-space: nowrap;
    }
    .active {
      
      // color: var(--color);
      color: #409EFF;
      /* padding-bottom: 15px; // 修正边框值:20px - 5px = 15px */
      border-bottom: 5px solid #409EFF;
      background-image: linear-gradient(
        to top,
        rgba($color: #409EFF, $alpha: 0.2),
        transparent
      );
    }
  }
}
</style>

tab-pane

<template>
  <div
    v-show="show && renderPan"
    class="tab-pane"
  >
    <slot></slot>
  </div>
</template>
<script>
export default {
      
  name: 'tabPane',
  props: {
      
    index: {
      
      type: [String, Number],
      default: ''
    },
    label: {
      
      type: String,
      required: true
    }
  },
  data: () => {
      
    return {
      
      renderPan: false
    }
  },
  computed: {
      
    show () {
      
      if (this.$parent.currentActive === this.index) return true
      return false
    }
  },
  mounted () {
      
    this.$parent.pans.push({
       id: Date.parse(new Date()) + Math.random(), index: this.index, label: this.label });
    this.renderPan = true
  },
  methods: {
      
  },
}
</script>
<style scoped lang="scss">
</style>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wgh4318/article/details/126215160

智能推荐

w10计算机用户名密码忘了,电脑w10系统开机密码忘了-程序员宅基地

文章浏览阅读1.4w次。如果是普通账户密码忘了请用第一种方法。方法(一)重新启动电脑,启动到系统登录界面时,同时按住Ctrl+Alt键,然后连击Del键两次,会出现新的登录界面,用户名处输入“Administrator”密码为空,回车即可登录,登录后,打开控制面板选/用户账户/更改账户/点击原来的“账户名”/更改我的密码/输入新密码,再次输入新密码,然后点击“更改密码”按钮即可。如果是计算机管理员密码忘了,请用第二种方法..._w10系统不知道电脑的账户密码是多少

MQ的概念和RabbitMQ知识点(无代码)-程序员宅基地

文章浏览阅读1.2w次,点赞7次,收藏76次。MQ全称是MessageQueue(消息队列),是保存消息在传输过程中的一种容器,既是存储消息的一种中间件。多是应用在分布式系统中进行通信的第三方中间件,如下图所示,发送方成为生产者,接收方称为消费者。............_mq

如何做好Bug分析-程序员宅基地

文章浏览阅读1.5k次,点赞47次,收藏18次。Bug分析是QA的一项主要技能,需要针对项目中遇到的经典问题进行分类分析, 直达问题本质。 并且能够给团队其他项目或者成员起到典型的借鉴作用。 当然也有一些非常经典的问题可以进行技术深挖, 以供参考。 个人认为比较典型的「Bug分析」是stackoverflow, 当然, 一个完善的bug分析库, 可以进行问题分类总结。 对于测试新人是有很大的帮助的。本质上, 在测试领域很多问题是可重现可整理可规避的。另外, bug分析本身是为了拓宽每个人的认知边界, 缩小团队间的乔哈里窗以达到最佳的合作状态。一个「好的B

H5020NL PULSE 50PIN千兆四口网络变压器 HQST H85001S建议IC配置型号_4口网络变压器-程序员宅基地

文章浏览阅读800次。HQST导读:PULSE普思是网络通讯行业中龙头企业之一,其中网络变压器产品大都由国内代工厂代为生产,H5020NLHX5020NL千兆四口网络变压器是普思公司经典老牌产品,相对整个市场用量不是很大,集中生产约一月20万颗左右……PULSE普思是网络通讯行业中龙头企业之一,其中网络变压器产品大都由国内代工厂代为生产,H5020NLHX5020NL千兆四口网络变压器是普思公司经典老牌产品,相对整个市场用量不是很大,集中生产约一月20万颗左右,……PULSE H5020NL千兆网络变压器对应HQS._4口网络变压器

D20 EME 支持2k MAC地址表-程序员宅基地

文章浏览阅读242次,点赞3次,收藏9次。交换机,壳体采用镀锌钢板,结构紧凑,支持八个百兆端口,可配置一至四个百兆光纤端口。两路冗余电源设计,支持4pin可插拔端子,交直流通用,同时提供电源防接保护及过压、欠压保护,极大提升产品工作的稳定性。2.支持两路冗余电源设计,4pin可插拔端子,支持12~36V宽电压输入,交直流通用,同时提供电源防反接保护及过压、欠压保护,极大提升产品工作的稳定性。4.-40℃~75℃工作温度,-40~85℃存储温度,在极端气象条件下也能安全运行。8.支持IEEE802.3,IEEE802.3u,IEEE802.3x。

阿昌教你如何使用通义灵码-程序员宅基地

文章浏览阅读946次。Hi,我是阿昌,今天教你如何使用通义灵码。_通义灵码

随便推点

MeterSphere使用MySQL8.0部署(Windows10)_metersphere mysql-程序员宅基地

文章浏览阅读1.3k次。背景看MeterSphere文档推荐5.7,但是因为我本地和服务器均为8.0版本,考虑到已经有很多服务在使用MySQL服务,而且相对来说,8.0比5.7性能更好,其他地方也更好些,所以就尝试直接用Mysql8.0部署本地环境:Windows10 MySQL8.0.18关于为什么会推荐使用MySQL5.7,其实主要原因是他们后端的sql有些group by语句在高版本的MySQL中是不合法的。MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_G.._metersphere mysql

简单的重写控件_自定义控件通常要重写哪些方法-程序员宅基地

文章浏览阅读923次。我们知道最基本的就是继承View,下面我们结合一个例子对重写进行简单地分析: 继承一个view,都会有一个或多个构造方法,在不同的时候调用到不同的构建方法,一般会重写三个方法,onMeasure();onLayout();onDraw();分别是测量,定位和画下面说下,android中重写view时,经常会遇到的混淆:requestLayout(),invalidate_自定义控件通常要重写哪些方法

十三周一次课Nginx负载均衡、ssl原理、生成ssl密钥对、配置ssl-程序员宅基地

文章浏览阅读120次。2019独角兽企业重金招聘Python工程师标准>>> ..._负载加证书原理过程

curviloft插件怎么用_【su】插件及其功能图示-程序员宅基地

文章浏览阅读3.3k次。01、TGI3D首先出场的是TGI3D,这个插件是我发目前认为最强大的插件。因为它可以处理线、面、体、贴图,还可以照片匹配建模,这个照片匹配建模不是SketchUp自带的那种简单匹配,而是可以匹配超复杂的模型。简直爱不释手,但遗憾的是这个插件是一个商业版的插件。02、SoapskinbubbleSoapskinbubble,这是个极富梦幻色彩的插件。其原理是以最适合的曲面来封闭几条规定的空间曲线,..._su curvioft

JAVA使用Gson排除特定字段_java po排除某个字段-程序员宅基地

文章浏览阅读2.4k次。1. 忽略值为NULLGson gson = new GsonBuilder().serializeNulls().create(); 2. 使用Java关键字transientclass Item { String name; public transient int age; } 3. 使用@Expose注解class Item { String name; @Ex_java po排除某个字段

网关、安全网关?与防火墙的区别(2),网络安全多线程断点续传-程序员宅基地

文章浏览阅读640次,点赞6次,收藏18次。网关是一个大的概念,没有特指是什么设备,很多设备都可以做网关,普通的PC机也能做,常用的网关设备是路由器。网关的作用主要是用来连接两个不同的网络,比如可以连接两个IP地址不相同的网络,或连接两个操作系统不同的网络,如WINDOWS与LINUX互连,或连接两个网络协议不同的网络,如TCP/IP与IPX.或拓扑结构不同的网络,如以太网和令牌环网。总之网关是一种中间媒介。而防火墙也可以做网关,但它的主要做用只是用来防病毒或防黑客,网关只算是防火墙的一个功能。网关与防火墙的区别。