基础的、简洁的标签页。

    Tabs 组件提供了选项卡功能,默认选中第一个标签页,你也可以通过 属性来指定当前选中的标签页。

    选项卡样式

    选项卡样式的标签页。

    Tabs 标签页 - 图1

    1. <template>
    2. <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
    3. <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
    4. <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
    5. <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
    6. <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
    7. </el-tabs>
    8. </template>
    9. <script>
    10. export default {
    11. data() {
    12. return {
    13. activeName: 'first'
    14. };
    15. },
    16. methods: {
    17. handleClick(tab, event) {
    18. console.log(tab, event);
    19. }
    20. }
    21. };
    22. </script>

    卡片化

    卡片化的标签页。

    type设置为border-card

    可以通过 tab-position 设置标签的位置

    Tabs 标签页 - 图2

    1. <template>
    2. <el-radio-group v-model="tabPosition" style="margin-bottom: 30px;">
    3. <el-radio-button label="top">top</el-radio-button>
    4. <el-radio-button label="right">right</el-radio-button>
    5. <el-radio-button label="bottom">bottom</el-radio-button>
    6. </el-radio-group>
    7. <el-tab-pane label="用户管理">用户管理</el-tab-pane>
    8. <el-tab-pane label="配置管理">配置管理</el-tab-pane>
    9. <el-tab-pane label="角色管理">角色管理</el-tab-pane>
    10. <el-tab-pane label="定时任务补偿">定时任务补偿</el-tab-pane>
    11. </el-tabs>
    12. </template>
    13. <script>
    14. export default {
    15. data() {
    16. return {
    17. tabPosition: 'left'
    18. };
    19. }
    20. };
    21. </script>

    自定义标签页

    可以通过具名 slot 来实现自定义标签页的内容

    动态增减标签页

    增减标签页按钮只能在选项卡样式的标签页下使用

    Tabs 标签页 - 图3

    1. <el-tabs v-model="editableTabsValue" type="card" editable @edit="handleTabsEdit">
    2. <el-tab-pane
    3. :key="item.name"
    4. v-for="(item, index) in editableTabs"
    5. :label="item.title"
    6. :name="item.name"
    7. >
    8. {{item.content}}
    9. </el-tab-pane>
    10. </el-tabs>
    11. <script>
    12. export default {
    13. data() {
    14. return {
    15. editableTabsValue: '2',
    16. editableTabs: [{
    17. title: 'Tab 1',
    18. name: '1',
    19. content: 'Tab 1 content'
    20. name: '2',
    21. content: 'Tab 2 content'
    22. }],
    23. tabIndex: 2
    24. }
    25. },
    26. methods: {
    27. handleTabsEdit(targetName, action) {
    28. if (action === 'add') {
    29. let newTabName = ++this.tabIndex + '';
    30. this.editableTabs.push({
    31. title: 'New Tab',
    32. name: newTabName,
    33. content: 'New Tab content'
    34. });
    35. this.editableTabsValue = newTabName;
    36. }
    37. if (action === 'remove') {
    38. let tabs = this.editableTabs;
    39. let activeName = this.editableTabsValue;
    40. if (activeName === targetName) {
    41. tabs.forEach((tab, index) => {
    42. if (tab.name === targetName) {
    43. let nextTab = tabs[index + 1] || tabs[index - 1];
    44. if (nextTab) {
    45. activeName = nextTab.name;
    46. }
    47. }
    48. });
    49. }
    50. this.editableTabsValue = activeName;
    51. this.editableTabs = tabs.filter(tab => tab.name !== targetName);
    52. }
    53. }
    54. }
    55. </script>

    Tabs Attributes

    Tabs Events