• ElementUI浅尝辄止31:Tabs 标签页


    选项卡组件:分隔内容上有关联但属于不同类别的数据集合。

    常见于网站内容信息分类或app内容信息tab分类

    1.如何使用?

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

    1. <script>
    2. export default {
    3. data() {
    4. return {
    5. activeName: 'second'
    6. };
    7. },
    8. methods: {
    9. handleClick(tab, event) {
    10. console.log(tab, event);
    11. }
    12. }
    13. };
    14. script>

    2.选项卡样式

    选项卡样式的标签页。

    1. 只需要设置 type 属性为 card 就可以使选项卡改变为标签风格。
    2. <script>
    3. export default {
    4. data() {
    5. return {
    6. activeName: 'first'
    7. };
    8. },
    9. methods: {
    10. handleClick(tab, event) {
    11. console.log(tab, event);
    12. }
    13. }
    14. };
    15. script>

    3.卡片化

    卡片化的标签页。

    1. 将type设置为border-card。
    2. "border-card">
    3. <el-tab-pane label="用户管理">用户管理el-tab-pane>
    4. <el-tab-pane label="配置管理">配置管理el-tab-pane>
    5. <el-tab-pane label="角色管理">角色管理el-tab-pane>
    6. <el-tab-pane label="定时任务补偿">定时任务补偿el-tab-pane>

    4.选项卡位置调整

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

    1. 标签一共有四个方向的设置 tabPosition="left|right|top|bottom"
    2. <script>
    3. export default {
    4. data() {
    5. return {
    6. tabPosition: 'left'
    7. };
    8. }
    9. };
    10. script>

    5.自定义标签页

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

    1. "border-card">
    2. <el-tab-pane>
    3. <span slot="label"><i class="el-icon-date">i> 我的行程span>
    4. 我的行程
    5. el-tab-pane>
    6. <el-tab-pane label="消息中心">消息中心el-tab-pane>
    7. <el-tab-pane label="角色管理">角色管理el-tab-pane>
    8. <el-tab-pane label="定时任务补偿">定时任务补偿el-tab-pane>

    6.动态增减标签页

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

    1. "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. <script>
    11. export default {
    12. data() {
    13. return {
    14. editableTabsValue: '2',
    15. editableTabs: [{
    16. title: 'Tab 1',
    17. name: '1',
    18. content: 'Tab 1 content'
    19. }, {
    20. title: 'Tab 2',
    21. name: '2',
    22. content: 'Tab 2 content'
    23. }],
    24. tabIndex: 2
    25. }
    26. },
    27. methods: {
    28. handleTabsEdit(targetName, action) {
    29. if (action === 'add') {
    30. let newTabName = ++this.tabIndex + '';
    31. this.editableTabs.push({
    32. title: 'New Tab',
    33. name: newTabName,
    34. content: 'New Tab content'
    35. });
    36. this.editableTabsValue = newTabName;
    37. }
    38. if (action === 'remove') {
    39. let tabs = this.editableTabs;
    40. let activeName = this.editableTabsValue;
    41. if (activeName === targetName) {
    42. tabs.forEach((tab, index) => {
    43. if (tab.name === targetName) {
    44. let nextTab = tabs[index + 1] || tabs[index - 1];
    45. if (nextTab) {
    46. activeName = nextTab.name;
    47. }
    48. }
    49. });
    50. }
    51. this.editableTabsValue = activeName;
    52. this.editableTabs = tabs.filter(tab => tab.name !== targetName);
    53. }
    54. }
    55. }
    56. }
    57. script>

     7.自定义增加标签页触发器

    1. "margin-bottom: 20px;">
    2. <el-button
    3. size="small"
    4. @click="addTab(editableTabsValue)"
    5. >
    6. add tab
    7. el-button>
  • <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
  • <el-tab-pane
  • v-for="(item, index) in editableTabs"
  • :key="item.name"
  • :label="item.title"
  • :name="item.name"
  • >
  • {{item.content}}
  • el-tab-pane>
  • el-tabs>
  • <script>
  • export default {
  • data() {
  • return {
  • editableTabsValue: '2',
  • editableTabs: [{
  • title: 'Tab 1',
  • name: '1',
  • content: 'Tab 1 content'
  • }, {
  • title: 'Tab 2',
  • name: '2',
  • content: 'Tab 2 content'
  • }],
  • tabIndex: 2
  • }
  • },
  • methods: {
  • addTab(targetName) {
  • let newTabName = ++this.tabIndex + '';
  • this.editableTabs.push({
  • title: 'New Tab',
  • name: newTabName,
  • content: 'New Tab content'
  • });
  • this.editableTabsValue = newTabName;
  • },
  • removeTab(targetName) {
  • let tabs = this.editableTabs;
  • let activeName = this.editableTabsValue;
  • if (activeName === targetName) {
  • tabs.forEach((tab, index) => {
  • if (tab.name === targetName) {
  • let nextTab = tabs[index + 1] || tabs[index - 1];
  • if (nextTab) {
  • activeName = nextTab.name;
  • }
  • }
  • });
  • }
  • this.editableTabsValue = activeName;
  • this.editableTabs = tabs.filter(tab => tab.name !== targetName);
  • }
  • }
  • }
  • script>
  •  

  • 相关阅读:
    [篇四章一]_在 VMWare 16 上安装 Windows 98 SE 操作系统
    笔记:Python 循环结构练习题
    基于Python的学生兼职平台的设计和实现
    FreeRTOS两个死机原因(中断调用接口异常)【杂记】
    工业智能网关BL110应用之三十三: 如何连接配置华为云服务器
    vue 分页器组件+css动画效果
    如何使用Apple Watch解锁iPhone和Mac?
    内联函数、带默认形参值的函数、引用传参以及函数重载的具体介绍和例子
    二叉树基本性质+oj题解析
    计算机毕设(附源码)JAVA-SSM基于JAVA的校园电车租赁系统
  • 原文地址:https://blog.csdn.net/W2457307263/article/details/132702968