• el-tabs(标签栏)的入门学习


    el-tabs(标签栏)的入门学习
    适用场景
    导航栏相似,项目中常见的是点击某个导航栏,主页面(el-main)模块的最上方会显示我们的标签栏集合,点击不同的导航栏,标签栏会在不断追加,若点击到标签集合中已存在,就进入选中指定的标签栏,显示页面

    知识点

    1. el-tabs嵌套el-tab-pane使用
    2. el-tabs的v-model对应el-tab-pane的name
    3. el-tabs的type可以指定为card,border-card
    4. el-tab-pane的label为显示的标签内容,标签的内容在首尾标签内部
    5. el-tabs可以设置closable,editable,addable,分别设置tab-remove,edit,tab-add动态修改标签集合
    6. 还有tab-click钩子
    7. el-tabs中设置tab-position,修改标签位置,可以为top,bottom,left,right

    效果图

    代码 

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Documenttitle>
    7. <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    8. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
    9. <script src="https://unpkg.com/element-ui/lib/index.js">script>
    10. head>
    11. <body>
    12. <div id='app'>
    13. <el-tabs v-model='tabPaneName' @tab-click='handleClick'>
    14. <el-tab-pane v-for='tab in tabs' :key='tab.name+"1"' :name='tab.name' :label='tab.label'>{{tab.content}}
    15. el-tab-pane>
    16. el-tabs>
    17. <el-tabs v-model='tabPaneName' type='card' closable @tab-remove='handleRemove'>
    18. <el-tab-pane v-for='tab in tabs' :key='tab.name+"2"' :name='tab.name' :label='tab.label'>{{tab.content}}
    19. el-tab-pane>
    20. el-tabs>
    21. <el-tabs v-model='tabPaneName' type='border-card' editable @edit='handleEdit'>
    22. <el-tab-pane v-for='tab in tabs' :key='tab.name+"3"' :name='tab.name' :label='tab.label'>{{tab.content}}
    23. el-tab-pane>
    24. el-tabs>
    25. <el-radio-group v-model='position'>
    26. <el-radio label='top'>topel-radio>
    27. <el-radio label='bottom'>bottomel-radio>
    28. <el-radio label='left'>leftel-radio>
    29. <el-radio label='right'>rightel-radio>
    30. el-radio-group>
    31. <el-tabs v-model='tabPaneName' type='border-card' :tab-position='position'>
    32. <el-tab-pane v-for='tab in tabs' :key='tab.name+"3"' :name='tab.name' >
    33. <template slot='label'>
    34. <i class='el-icon-search'>i>{{tab.label}}
    35. template>
    36. {{tab.content}}
    37. el-tab-pane>
    38. el-tabs>
    39. div>
    40. body>
    41. html>
    42. <script>
    43. new Vue({
    44. el: "#app",
    45. data() {
    46. return {
    47. position: '',
    48. tabPaneName: 'first',
    49. tabs: [{ name: 'first', label: '首页', content: '欢迎光临' },
    50. { name: 'second', label: '菜单', content: '有小炒,火锅,烧烤' },
    51. { name: 'third', label: '饮料', content: '杨枝甘露,冰糖雪梨' },
    52. { name: 'fouth', label: '部门', content: '餐饮,财经' }]
    53. }
    54. },
    55. methods: {
    56. //点击钩子
    57. handleClick(target, action) {
    58. console.log(target.name, action)
    59. },
    60. //删除钩子
    61. handleRemove(targetName) {
    62. this.tabs.forEach((item, index) => {
    63. if (item.name === targetName) {
    64. this.tabs.splice(index, 1)
    65. }
    66. });
    67. },
    68. //编辑钩子
    69. handleEdit(targetName, action) {
    70. if (action === 'remove') {
    71. this.tabs.forEach((item, index) => {
    72. if (item.name === targetName) {
    73. this.tabs.splice(index, 1)
    74. }
    75. })
    76. } else if (action === 'add') {
    77. let addItem = {
    78. name: "newName" + this.tabs.length,
    79. label: "newLabel" + this.tabs.length,
    80. content: "newContent" + this.tabs.length
    81. }
    82. this.tabs.push(addItem)
    83. }
    84. }
    85. }
    86. })
    87. script>

    官网

    el-tabs的入门学习

  • 相关阅读:
    Android eSIM-LPA基于Android13的实现
    C++继承
    Talk | ICCV’23 清华赵天辰:Ada3D-基于动态推理的3D感知模型压缩及软硬件协同优化
    电脑出现找不到msvcp120.dll无法继续执行代码,不用担心多种方法帮你搞定
    java计算机毕业设计智慧机场管理系统源程序+mysql+系统+lw文档+远程调试
    我所理解liunx下的原子操作
    两台电脑mysql数据迁移,各版本mysql迁移(亲测)
    第一个SpringBoot程序
    【CSDN竞赛第11期】编程竞赛总结
    Vue3基础——Composition API初体验、合成API详解、setup、Provide 和 inject
  • 原文地址:https://blog.csdn.net/ok060/article/details/133626819