组件基础之动态tab组件

<template>
  <div id="demo31">
     <p>-----------------组件基础之动态tab组件一---------------------</p>
    <button
      v-for="tab in tabs"
      v-bind:key="tab"
      v-bind:class="['tab-button', { active: currentTab === tab }]"
      v-on:click="currentTab = tab"
    >{{ tab }}</button>

    <component v-bind:is="currentTabComponent" class="tab"></component>
  </div>
</template>

<script>
export default {
  components: {
    tabhome: {
      template: "<div>Home component<div>"
    },
    tabpost: {
      template: "<div>Posts component<div>"
    },
    tabarchive: {
      template: "<div>Archive component<div>"
    }
  },
  data() {
    return {
      currentTab: "Home",
      tabs: ["Home", "Post", "Archive"]
    };
  },
  computed: {
    currentTabComponent() {
      return "tab" + this.currentTab.toLowerCase();
    }
  }
};
</script>
<style>
.tab-button {
  padding: 6px 10px;
  border-top-left-radius: 3px;
  border-top-right-radius: 3px;
  border: 1px sollid #ccc;
  cursor: pointer;
  background: #f0f0f0;
  margin-bottom: -1px;
  margin-right: -1px;
}
.tab-button:hover {
  background: #e0e0e0;
}
.tab-button .active {
  background: #e0e0e0;
}
.tab {
  border: 1px solid #ccc;
  padding: 10px;
}
</style>

demo2:

<template>
  <div id="demo32">
     <p>-----------------组件基础之动态tab组件二---------------------</p>
    <button
      v-for="(tab,index) in tabs"
      v-bind:key="index"
      v-bind:class="['tab-button', { active: currentIndex === index }]"
      v-on:click="currentIndex = index"
    >{{ tab }}</button>

    <component v-bind:is="currentTabComponent" class="tab"></component>
  </div>
</template>

<script>
export default {
  components: {
    tab_home: {
      template: "<div>Home component<div>"
    },
    tab_post: {
      template: "<div>Posts component<div>"
    },
    tab_archive: {
      template: "<div>Archive component<div>"
    }
  },
  data() {
    return {    
      currentIndex:0,
      tabs: ["Home", "Post", "Archive"]
    };
  },
  computed: {
    currentTabComponent() {     
      return 'tab_'+this.tabs[this.currentIndex].toLowerCase()    
    }
  }
};
</script>
<style>
.tab-button {
  padding: 6px 10px;
  border-top-left-radius: 3px;
  border-top-right-radius: 3px;
  border: 1px sollid #ccc;
  cursor: pointer;
  background: #f0f0f0;
  margin-bottom: -1px;
  margin-right: -1px;
}
.tab-button:hover {
  background: #e0e0e0;
}
.tab-button .active {
  background: #e0e0e0;
}
.tab {
  border: 1px solid #ccc;
  padding: 10px;
}
</style>

 

 

https://blog.csdn.net/kingrome2017/article/details/80541680  vuejs2.0 组件基础动态组件 Tab选项卡插件

转载于:https://www.cnblogs.com/shy1766IT/p/11001604.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值