wxc-tab

MinUI 小程序组件 - 选项卡

Install

  1. $ min install @minui/wxc-tab

Demos

动画版

可改变颜色,默认选中超出范围

选项卡 tab - 图1

  1. <template>
  2. <wxc-tab
  3. bind:tabchange="onClick"
  4. default-index="{{4}}"
  5. active-text-color="#108ee9"
  6. active-line-color="#108ee9"
  7. component-id="c1"
  8. animate="{{true}}"
  9. >
  10. <wxc-tab-panel
  11. wx:for="{{tabs}}"
  12. wx:for-item="tab"
  13. wx:key="{{tab.content}}"
  14. tab-index="{{index}}"
  15. component-id="c1"
  16. label="{{tab.title}}"
  17. >
  18. {{tab.content}}
  19. </wxc-tab-panel>
  20. </wxc-tab>
  21. </template>
  22. <script>
  23. export default {
  24. config: {
  25. usingComponents: {
  26. 'wxc-tab': '@minui/wxc-tab',
  27. 'wxc-tab-panel': '@minui/wxc-tab/panel'
  28. }
  29. },
  30. data: {
  31. tabs: [
  32. {title: '选项一', content: '内容一'},
  33. {title: '选项二', content: '内容二'},
  34. {title: '选项三', content: '内容三'}
  35. ]
  36. },
  37. /** note: 在 wxp 文件或者页面文件中请去掉 methods 包装 */
  38. methods: {
  39. onClick: function(e) {
  40. console.log(`ComponentId:${e.detail.componentId},you selected:${e.detail.key}`);
  41. }
  42. }
  43. }
  44. </script>
  45. <style>
  46. </style>

基础版本

小于等于4个tab

选项卡 tab - 图2

  1. <template>
  2. <wxc-tab
  3. bind:tabchange="onClick"
  4. default-index="{{0}}"
  5. component-id="c4"
  6. >
  7. <wxc-tab-panel
  8. wx:for="{{tabs}}"
  9. wx:for-item="tab"
  10. wx:key="{{tab.content}}"
  11. tab-index="{{index}}"
  12. component-id="c4"
  13. label="{{tab.title}}"
  14. >
  15. {{tab.content}}
  16. </wxc-tab-panel>
  17. </wxc-tab>
  18. </template>
  19. <script>
  20. export default {
  21. config: {
  22. usingComponents: {
  23. 'wxc-tab': '@minui/wxc-tab',
  24. 'wxc-tab-panel': '@minui/wxc-tab/panel'
  25. }
  26. },
  27. data: {
  28. tabs: [
  29. {title: '选项一', content: '内容一'},
  30. {title: '选项二', content: '内容二'},
  31. {title: '选项三', content: '内容三'}
  32. ]
  33. },
  34. /** note: 在 wxp 文件或者页面文件中请去掉 methods 包装 */
  35. methods: {
  36. onClick: function(e) {
  37. console.log(`ComponentId:${e.detail.componentId},you selected:${e.detail.key}`);
  38. }
  39. }
  40. }
  41. </script>
  42. <style>
  43. </style>

多个tab

可滑动,有动画

选项卡 tab - 图3

  1. <template>
  2. <wxc-tab
  3. bind:tabchange="onClick"
  4. default-index="{{2}}"
  5. component-id="c2"
  6. animate="{{true}}"
  7. >
  8. <wxc-tab-panel
  9. wx:for="{{tabs}}"
  10. wx:for-item="tab"
  11. wx:key="{{tab.content}}"
  12. tab-index="{{index}}"
  13. component-id="c2"
  14. label="{{tab.title}}"
  15. >
  16. {{tab.content}}
  17. </wxc-tab-panel>
  18. </wxc-tab>
  19. </template>
  20. <script>
  21. export default {
  22. config: {
  23. usingComponents: {
  24. 'wxc-tab': '@minui/wxc-tab',
  25. 'wxc-tab-panel': '@minui/wxc-tab/panel',
  26. 'wxc-tab-label': '@minui/wxc-tab/label'
  27. }
  28. },
  29. data: {
  30. tabs: [
  31. {title: '选项一', content: '内容一'},
  32. {title: '选项二', content: '内容二'},
  33. {title: '选项三', content: '内容三'},
  34. {title: '选项四', content: '内容四'},
  35. {title: '选项五', content: '内容五'},
  36. {title: '选项六', content: '内容六'}
  37. ]
  38. },
  39. /** note: 在 wxp 文件或者页面文件中请去掉 methods 包装 */
  40. methods: {
  41. onClick: function(e) {
  42. console.log(`ComponentId:${e.detail.componentId},you selected:${e.detail.key}`);
  43. }
  44. }
  45. }
  46. </script>
  47. <style>
  48. </style>

自定义头部

可自定义头部

选项卡 tab - 图4

  1. <template>
  2. <wxc-tab
  3. bind:tabchange="onClick"
  4. default-index="{{activeKey}}"
  5. component-id="c3"
  6. animate="{{true}}"
  7. class="demo-tab"
  8. >
  9. <view slot="tablabel">
  10. <wxc-tab-label
  11. wx:for="{{tabs}}"
  12. wx:for-item="tab"
  13. wx:key="{{tab.title}}"
  14. tab-index="{{index}}"
  15. component-id="c3"
  16. >
  17. <view class="demo-tab__label">
  18. <icon type="success" size="16"
  19. color="{{ activeKey === index ? '#ff5777' : '#555' }}"
  20. >
  21. </icon>
  22. <view class="demo-tab__text {{ activeKey === index ? 'demo-tab--active' : ''}}">
  23. {{tab.title}}
  24. </view>
  25. </view>
  26. </wxc-tab-label>
  27. </view>
  28. <wxc-tab-panel
  29. wx:for="{{tabs}}"
  30. wx:for-item="tab"
  31. wx:key="{{tab.content}}"
  32. tab-index="{{index}}"
  33. component-id="c3"
  34. >
  35. {{tab.content}}
  36. </wxc-tab-panel>
  37. </wxc-tab>
  38. </template>
  39. <script>
  40. export default {
  41. config: {
  42. usingComponents: {
  43. 'wxc-tab': '@minui/wxc-tab',
  44. 'wxc-tab-panel': '@minui/wxc-tab/panel',
  45. 'wxc-tab-label': '@minui/wxc-tab/label'
  46. }
  47. },
  48. data: {
  49. tabs: [
  50. {title: '选项一', content: '内容一'},
  51. {title: '选项二', content: '内容二'},
  52. {title: '选项三', content: '内容三'}
  53. ],
  54. activeKey: 0
  55. },
  56. /** note: 在 wxp 文件或者页面文件中请去掉 methods 包装 */
  57. methods: {
  58. onClick: function(e) {
  59. console.log(`ComponentId:${e.detail.componentId},you selected:${e.detail.key}`);
  60. const idx = e.detail.key;
  61. this.setData({
  62. activeKey: idx
  63. });
  64. }
  65. }
  66. }
  67. </script>
  68. <style lang="pcss">
  69. @b demo-tab {
  70. @e label {
  71. width: 100%;
  72. margin: 20rpx 0;
  73. display: flex;
  74. justify-content: center;
  75. align-items: center;
  76. }
  77. @e text {
  78. margin-left: 8rpx;
  79. }
  80. @m active {
  81. color: #ff5777;
  82. }
  83. }
  84. </style>

API

Tab【props】

名称描述
default-index[说明]:当前激活面板的 index。[类型]:Number[默认值]:0
animate[说明]:是否开启动画。[类型]:Boolean[默认值]:false
component-id[说明]:同时调用两个tab时,需要指定component-id。[类型]:String
bindtabchange[说明]:tab切换的回调函数
text-color[说明]:文字颜色。[类型]:String[默认值]:#000
active-text-color[说明]:选中文字颜色。[类型]:String[默认值]:#ff5777
line-color[说明]:线条颜色。[类型]:String[默认值]:#ddd
active-line-color[说明]:选中线条颜色。[类型]:String[默认值]:#ff5777
full-screen[说明]:tab 组件全屏设置。[类型]:Boolean[默认值]:false

Tab-Panel【props】

名称描述
tab-index[说明]:激活当前面板的 index。[类型]:Number[默认值]:0
label[说明]:选项卡头部显示的文字。[类型]:String
component-id[说明]:同时调用两个tab时,需要指定component-id。[类型]:String

Tab-Label【props】

自定义头部时,需要在外层加slot="tablabel"

名称描述
tab-index[说明]:激活当前面板的 index。[类型]:Number[默认值]:0
component-id[说明]:同时调用两个tab时,需要指定component-id。[类型]:String
地址
tab 组件文档 https://meili.github.io/min/docs/minui/index.html#tab
tab 组件源码 https://github.com/meili/minui/tree/master/packages/wxc-tab
MinUI 组件库 https://github.com/meili/minui

Preview

tab

ChangeLog

v1.0.5(2018.04.27)

  • panel 高度自适应

v1.0.4(2018.02.09)

  • 新增 full-screen 属性

v1.0.3(2018.01.04)

  • 修复点击tab时的定位问题

v1.0.2(2017.11.02)

  • update .npmignore

v1.0.1(2017.10.24)

  • 初始版本