Tabs 标签页

定义

可以为平级的大块信息内容进行分类收纳和展现,保持界面整洁,用户不需跳转页面即可比较和浏览信息。

等分布局

Tabs 标签页 - 图1

  1. <template>
  2. <se-tabs :activeName="activeName" layout="equal">
  3. <se-tab-pane name="tab_1" label="tab_1">
  4. <template v-slot:label="{ active }">
  5. <span>
  6. <i :class="['se-tab-icon', active ? 'se-tab-icon--active' : null]"></i>
  7. 导航1
  8. </span>
  9. </template>
  10. 导航1的内容
  11. </se-tab-pane>
  12. <se-tab-pane label="导航2" name="tab_2">导航2的内容</se-tab-pane>
  13. <se-tab-pane label="导航3" name="tab_3">导航3的内容</se-tab-pane>
  14. </se-tabs>
  15. </template>
  16. <style>
  17. .se-tab-pane {
  18. padding: 20px;
  19. }
  20. .se-tab-icon {
  21. display: inline-block;
  22. width: 16px;
  23. height: 16px;
  24. margin-right: 5px;
  25. vertical-align: middle;
  26. background-color: currentColor;
  27. }
  28. .se-tab-icon--active {
  29. background-color: #01d567;
  30. }
  31. </style>
  32. <script>
  33. export default {
  34. data() {
  35. return {
  36. activeName: 'tab_1'
  37. }
  38. }
  39. }
  40. </script>

居中布局

Tabs 标签页 - 图2

  1. <se-tabs :activeName="activeName" layout="center">
  2. <se-tab-pane label="导航1" name="tab_1">导航1的内容</se-tab-pane>
  3. <se-tab-pane label="导航2" name="tab_2">导航2的内容</se-tab-pane>
  4. <se-tab-pane label="导航3" name="tab_3">导航3的内容</se-tab-pane>
  5. <se-tab-pane label="导航4" name="tab_4">导航4的内容</se-tab-pane>
  6. <se-tab-pane label="导航5" name="tab_5">导航5的内容</se-tab-pane>
  7. <se-tab-pane label="导航6" name="tab_6">导航6的内容</se-tab-pane>
  8. </se-tabs>
  9. <script>
  10. export default {
  11. data() {
  12. return {
  13. activeName: 'tab_1'
  14. }
  15. }
  16. }
  17. </script>

居左布局

Tabs 标签页 - 图3

  1. <se-tabs :activeName="activeName" layout="left">
  2. <se-tab-pane label="导航1" name="tab_1">导航1的内容</se-tab-pane>
  3. <se-tab-pane label="导航2" name="tab_2">导航2的内容</se-tab-pane>
  4. <se-tab-pane label="导航3" name="tab_3">导航3的内容</se-tab-pane>
  5. <se-tab-pane label="导航4" name="tab_4">导航4的内容</se-tab-pane>
  6. <se-tab-pane label="导航5" name="tab_5">导航5的内容</se-tab-pane>
  7. </se-tabs>
  8. <style>
  9. .se-tab-pane {
  10. padding: 20px;
  11. }
  12. </style>
  13. <script>
  14. export default {
  15. data() {
  16. return {
  17. activeName: 'tab_1'
  18. }
  19. }
  20. }
  21. </script>

侧边栏布局

Tabs 标签页 - 图4

  1. <div class="demo-container">
  2. <se-tabs :activeName="activeName" sidebar style="height: 480px">
  3. <se-tab-pane v-for="item in list" :key="item.name" :label="item.label" :name="item.name">
  4. {{ item.content }}
  5. </se-tab-pane>
  6. </se-tabs>
  7. </div>
  8. <style>
  9. .se-tab-pane {
  10. padding: 20px;
  11. }
  12. .demo-container {
  13. height: 480px;
  14. background-color: #fff;
  15. border: 1px solid #d0d0d0;
  16. }
  17. </style>
  18. <script>
  19. export default {
  20. data() {
  21. return {
  22. activeName: 'tab_1',
  23. list: Array.from({ length: 8 }, (_, i) => {
  24. i = i + 1
  25. return {
  26. name: `tab_${i}`,
  27. label: `导航 ${i}`,
  28. content: `导航 ${i} 的内容`
  29. }
  30. })
  31. }
  32. }
  33. }
  34. </script>

外部修改选中值

只需再增加 v-model 绑定和 activeName 相同的值即可

Tabs 标签页 - 图5

<template>
  <se-button @click="handler">change</se-button>
  <se-tabs :activeName="activeName" layout="equal" v-model="activeName">
    <se-tab-pane name="tab_1" label="tab_1">
      <template v-slot:label="{ active }">
        <span>
          <i :class="['se-tab-icon', active ? 'se-tab-icon--active' : null]"></i>
          导航1
        </span>
      </template>
      导航1的内容
    </se-tab-pane>
    <se-tab-pane label="导航2" name="tab_2">导航2的内容</se-tab-pane>
    <se-tab-pane label="导航3" name="tab_3">导航3的内容</se-tab-pane>
  </se-tabs>
</template>

<style>
  .se-tab-pane {
    padding: 20px;
  }

  .se-tab-icon {
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-right: 5px;
    vertical-align: middle;
    background-color: currentColor;
  }

  .se-tab-icon--active {
    background-color: #01d567;
  }
</style>

<script>
  export default {
    data() {
      return {
        activeName: 'tab_1'
      }
    },
    methods: {
      handler() {
        this.activeName = 'tab_2'
      }
    }
  }
</script>

SeTabs Props

属性类型默认值必填说明
active-namestringdefaultfalse当前选中 tab 对应的 name
layoutstringequalfalseequal / left / center,等分布局、居左布局和居中布局
sidebarbooleanfalsefalse侧边栏

Tabs Events

事件名称描述回调函数参数
tabClick点击 tab 时触发EventHandle

SeTabPane Props

属性类型默认值必填说明
labelstringdefaultfalse标签页标题
namestringdefaulttruetab 唯一标识

SeTabPane Slots

名称必填说明
labelTab 标签