使用vue制作一个简单的tabs标签页组件

<template>
  <div id="text_property">
    <div class="tabBar">
      <div style="display: flex;justify-content: center;">
        <span
          v-for="item in items"
          :key="item.value"
          style="height:120px;width:100px;display:inline-block;"
        >
          <label
            class="tabBar_label"
            :style="item.value===selTab?'height: 40px;width: 70px;background:#6666ff;':'height: 40px;width: 70px;background:#cc3399;'"
            ><input
              :value="item.value"
              type="radio"
              name="tabs"
              @click="tabClick"
            />{{ item.title }}</label
          >
          <span
            style="height:1px;width:100px;display:inline-block;background:red;"
          ></span>
        </span>
      </div>
    </div>
    <div v-for="(tabItem,idx) in items" :key="tabItem[idx]">
        <div v-if="tabItem.value===selTab">{{tabItem.content}}</div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      selTab: 'a',
      items: [
        { value: "a", title: "tab1", content: "1111" },
        { value: "b", title: "tab2", content: "2222" },
        { value: "c", title: "tab3", content: "333" }
      ]
    };
  },
  created() {},
  mounted() {},
  onEvents: {},
  computed: {},
  watch: {},
  methods: {
    tabClick(e) {
      this.selTab = e.target.value;
    }
  }
};
</script>
<style lang="scss" scoped>
#text_property{
  height: 300px;
  width: 300px;
  border: 1px solid rgb(93, 150, 235);
}
.tabBar input[type="radio"] {
  display: none;
}
.tabBar_label {
  display: inline-block;
  border: 1px solid fuchsia;
}
</style>

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue3动态组件实现tabs标签的步骤如下: 1. 创建tabs组件,包含tabs和tab两个子组件tabs组件负责显示当前选中的tab和切换tab,tab组件则负责显示tab的内容。 2. 在tabs组件中定义一个数组,用于存储所有的tab信息。每个tab信息包括tab的名称和对应的组件。 3. 在tabs组件使用v-for指令循环渲染所有的tab,同时使用动态组件来渲染对应的组件。 4. 在tab组件中定义一个插槽,用于显示tab的内容。 5. 在tabs组件中定义一个方法,用于切换tab。该方法接受一个index参数,表示要切换到的tab的索引。该方法根据索引更新当前选中的tab,并将对应的组件渲染出来。 6. 在tabs组件使用v-on指令绑定点击事件,调用切换tab的方法。 7. 在父组件中引入tabs组件,并传入所有的tab信息。 8. 使用tabs组件来显示tab标签。 示例代码如下: // Tabs.vue <template> <div class="tabs"> <div class="tab-list"> <div class="tab" v-for="(tab, index) in tabs" :key="tab.name" :class="{ active: isActiveTab(index) }" @click="selectTab(index)" >{{ tab.name }}</div> </div> <div class="tab-content"> <component :is="tabs[currentTab].component"></component> </div> </div> </template> <script> export default { name: "Tabs", props: ["tabs"], data() { return { currentTab: 0, }; }, methods: { isActiveTab(index) { return this.currentTab === index; }, selectTab(index) { this.currentTab = index; }, }, }; </script> // Tab.vue <template> <div class="tab-content"> <slot></slot> </div> </template> // App.vue <template> <div class="app"> <Tabs :tabs="tabs"></Tabs> </div> </template> <script> import Tabs from "./Tabs.vue"; import Tab from "./Tab.vue"; import Tab1 from "./Tab1.vue"; import Tab2 from "./Tab2.vue"; export default { name: "App", components: { Tabs, Tab, Tab1, Tab2, }, data() { return { tabs: [ { name: "Tab 1", component: "Tab1" }, { name: "Tab 2", component: "Tab2" }, ], }; }, }; </script>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值