TabBar 标签栏

Scan me!

用于创建不含内容区域的标签栏

引入

  1. import { TabBar } from 'mand-mobile'
  2. Vue.component(TabBar.name, TabBar)

代码演示

基本

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-0">
  3. <md-tab-bar
  4. :titles="titles"
  5. ></md-tab-bar>
  6. </div>
  7. </template>
  8. <script>
  9. import {TabBar} from 'mand-mobile'
  10. export default {
  11. name: 'tab-bar-demo',
  12. components: {
  13. [TabBar.name]: TabBar,
  14. },
  15. data() {
  16. return {
  17. titles: ['第一', '第二', '第三', '第四'],
  18. }
  19. },
  20. }
  21. </script>

多项滚动

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-0">
  3. <md-tab-bar :titles="titles"></md-tab-bar>
  4. </div>
  5. </template>
  6. <script>
  7. import {TabBar} from 'mand-mobile'
  8. export default {
  9. name: 'tab-bar-demo',
  10. components: {
  11. [TabBar.name]: TabBar,
  12. },
  13. data() {
  14. return {
  15. titles: ['第一', '第二', '第三', '第四', '第五', '第六', '第七', '第八', '第九'],
  16. }
  17. },
  18. }
  19. </script>
  20.  

指定下划线长度

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-3">
  3. <md-tab-bar
  4. :titles="titles"
  5. :show-ink-bar="true"
  6. :ink-bar-length="40"
  7. ></md-tab-bar>
  8. </div>
  9. </template>
  10. <script>
  11. import {TabBar} from 'mand-mobile'
  12. export default {
  13. name: 'tab-bar-demo',
  14. components: {
  15. [TabBar.name]: TabBar,
  16. },
  17. data() {
  18. return {
  19. titles: ['第一', '第二', '第三', '第四'],
  20. }
  21. },
  22. }
  23. </script>

自定义内容

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-5">
  3. <md-tab-bar
  4. :show-ink-bar="true">
  5. <div>
  6. <md-icon name="hollow-plus" size="sm"></md-icon>
  7. </div>
  8. <div>
  9. <md-icon name="cross" size="sm"></md-icon>
  10. </div>
  11. <div>
  12. <md-icon name="right" size="sm"></md-icon>
  13. </div>
  14. </md-tab-bar>
  15. </div>
  16. </template>
  17. <script>
  18. import {TabBar, Icon} from 'mand-mobile'
  19. export default {
  20. name: 'tab-bar-demo',
  21. components: {
  22. [Icon.name]: Icon,
  23. [TabBar.name]: TabBar,
  24. },
  25. }
  26. </script>

通过公共方法切换 selectTab(2)

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-7">
  3. <md-tab-bar
  4. :titles="titles"
  5. :show-ink-bar="true"
  6. ref="tabBar"
  7. ></md-tab-bar>
  8. </div>
  9. </template>
  10. <script>
  11. import {TabBar, Toast} from 'mand-mobile'
  12. export default {
  13. name: 'tab-bar-demo',
  14. components: {
  15. [TabBar.name]: TabBar,
  16. },
  17. data() {
  18. return {
  19. titles: ['第一', '第二', '第三', '第四'],
  20. }
  21. },
  22. mounted() {
  23. window.triggerTabBar = () => {
  24. this.$refs.tabBar.selectTab(2)
  25. }
  26. },
  27. methods: {
  28. alert(index, preIndex) {
  29. Toast.succeed(`index${preIndex}切换为${index}`)
  30. },
  31. },
  32. }
  33. </script>

设置边距

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-9">
  3. <md-tab-bar
  4. :titles="titles"
  5. ></md-tab-bar>
  6. </div>
  7. </template>
  8. <script>
  9. import {TabBar} from 'mand-mobile'
  10. export default {
  11. name: 'tab-bar-demo',
  12. components: {
  13. [TabBar.name]: TabBar,
  14. },
  15. data() {
  16. return {
  17. titles: ['第一', '第二', '第三', '第四'],
  18. }
  19. },
  20. }
  21. </script>
  22. <style lang="stylus" scoped>
  23. .md-tab-bar
  24. padding 0 100px
  25. </style>

不带下划线

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-1">
  3. <md-tab-bar
  4. :titles="titles"
  5. :show-ink-bar="false"
  6. ></md-tab-bar>
  7. </div>
  8. </template>
  9. <script>
  10. import {TabBar} from 'mand-mobile'
  11. export default {
  12. name: 'tab-bar-demo',
  13. components: {
  14. [TabBar.name]: TabBar,
  15. },
  16. data() {
  17. return {
  18. titles: ['第一', '第二', '第三', '第四'],
  19. }
  20. },
  21. }
  22. </script>

指定默认标签

默认标签2
  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-2">
  3. <md-tab-bar
  4. :titles="titles"
  5. :show-ink-bar="true"
  6. :default-index="2"
  7. ></md-tab-bar>
  8. </div>
  9. </template>
  10. <script>
  11. import {TabBar} from 'mand-mobile'
  12. export default {
  13. name: 'tab-bar-demo',
  14. components: {
  15. [TabBar.name]: TabBar,
  16. },
  17. data() {
  18. return {
  19. titles: ['第一', '第二', '第三', '第四'],
  20. }
  21. },
  22. }
  23. </script>

禁用下划线动画

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-4">
  3. <md-tab-bar
  4. :titles="titles"
  5. :show-ink-bar="true"
  6. :ink-bar-animate="false"
  7. ></md-tab-bar>
  8. </div>
  9. </template>
  10. <script>
  11. import {TabBar} from 'mand-mobile'
  12. export default {
  13. name: 'tab-bar-demo',
  14. components: {
  15. [TabBar.name]: TabBar,
  16. },
  17. data() {
  18. return {
  19. titles: ['第一', '第二', '第三', '第四'],
  20. }
  21. },
  22. }
  23. </script>

监听点击事件

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-6">
  3. <md-tab-bar
  4. :titles="titles"
  5. @indexChanged="alert"
  6. ></md-tab-bar>
  7. </div>
  8. </template>
  9. <script>
  10. import {TabBar, Toast} from 'mand-mobile'
  11. export default {
  12. name: 'tab-bar-demo',
  13. components: {
  14. [TabBar.name]: TabBar,
  15. },
  16. data() {
  17. return {
  18. titles: ['第一', '第二', '第三', '第四'],
  19. }
  20. },
  21. methods: {
  22. alert(index, preIndex) {
  23. Toast.succeed(`index${preIndex}切换为${index}`)
  24. },
  25. },
  26. }
  27. </script>

scope-slot

  1. <template>
  2. <div class="md-example-child md-example-child-tab-bar md-example-child-tab-bar-8">
  3. <md-tab-bar
  4. :show-ink-bar="true"
  5. :titles="titles">
  6. <div slot="title"
  7. slot-scope="props">
  8. <md-icon name="hollow-plus" size="sm"></md-icon>
  9. {{props.prefix}}{{props.title}}
  10. </div>
  11. </md-tab-bar>
  12. </div>
  13. </template>
  14. <script>
  15. import {TabBar, Icon} from 'mand-mobile'
  16. export default {
  17. name: 'tab-bar-demo',
  18. data() {
  19. return {
  20. titles: [
  21. {
  22. title: '第1',
  23. prefix: '我',
  24. },
  25. {
  26. title: '第2',
  27. prefix: '你',
  28. },
  29. {
  30. title: '第3',
  31. prefix: '他',
  32. },
  33. ],
  34. }
  35. },
  36. components: {
  37. [Icon.name]: Icon,
  38. [TabBar.name]: TabBar,
  39. },
  40. }
  41. </script>

API

TabBar Props

属性说明类型默认值备注
titles标签标题数组Array-传入该数组会直接根据数组内容渲染组件,也可以不使用该属性,直接在控件中插入定制的标题按钮。在不使用scope-slot时,该值为字符串数组;在使用scope-slot时,该值为对象数组,每个对象会作为props供父组件使用
show-ink-bar是否显示下划线Booleantrue-
ink-bar-length下划线宽度Number70该数值为下划线占标签按钮宽度的百分比,须在0-100之间
ink-bar-animate是否启用下划线动画Booleantrue-
default-index默认激活的标签索引Number0-

TabBar Methods

selectTab(index)

选择某一标签

属性说明类型默认值
index标签索引Number-

TabBar Events

@indexChanged(index, preIndex)

标签索引发生变化

属性说明类型
index改变后的标签索引Number
preIndex改变前的标签索引Number