TabBar 标签栏

位于 APP 底部,方便用户在不同功能模块之间进行快速切换。

规则

  • 用作 APP 的一级分类,数量控制在 3-5 个之间。

  • 即使某个 Tab 不可用,也不要禁用或者移除该 Tab。

  • 使用 Badge 进行提示,足不出户也能知道有内容更新。

代码演示

APP 型选项卡

多用于页面的内容区块,起着控制小范围内的大块内容的分组和隐藏,起着保持界面整洁的作用。

  1. import { TabBar, Icon } from 'antd-mobile';
  2. class TabBarExample extends React.Component {
  3. constructor(props) {
  4. super(props);
  5. this.state = {
  6. selectedTab: 'redTab',
  7. hidden: false,
  8. };
  9. }
  10. renderContent(pageText) {
  11. return (
  12. <div style={{ backgroundColor: 'white', height: '100%', textAlign: 'center' }}>
  13. <div style={{ paddingTop: 60 }}>你已点击“{pageText}” tab 当前展示“{pageText}”信息</div>
  14. <a style={{ display: 'block', marginTop: 40, marginBottom: 600, color: '#108ee9' }}
  15. onClick={(e) => {
  16. e.preventDefault();
  17. this.setState({
  18. hidden: !this.state.hidden,
  19. });
  20. }}
  21. >
  22. 点击切换 tab-bar 显示/隐藏
  23. </a>
  24. </div>
  25. );
  26. }
  27. render() {
  28. return (
  29. <TabBar
  30. unselectedTintColor="#949494"
  31. tintColor="#33A3F4"
  32. barTintColor="white"
  33. hidden={this.state.hidden}
  34. >
  35. <TabBar.Item
  36. title="生活"
  37. key="生活"
  38. icon={<div style={{
  39. width: '0.44rem',
  40. height: '0.44rem',
  41. background: 'url(https://zos.alipayobjects.com/rmsportal/sifuoDUQdAFKAVcFGROC.svg) center center / 0.42rem 0.42rem no-repeat' }}
  42. />
  43. }
  44. selectedIcon={<div style={{
  45. width: '0.44rem',
  46. height: '0.44rem',
  47. background: 'url(https://zos.alipayobjects.com/rmsportal/iSrlOTqrKddqbOmlvUfq.svg) center center / 0.42rem 0.42rem no-repeat' }}
  48. />
  49. }
  50. selected={this.state.selectedTab === 'blueTab'}
  51. badge={1}
  52. onPress={() => {
  53. this.setState({
  54. selectedTab: 'blueTab',
  55. });
  56. }}
  57. data-seed="logId"
  58. >
  59. {this.renderContent('生活')}
  60. </TabBar.Item>
  61. <TabBar.Item
  62. icon={<Icon type="koubei-o" size="md" />}
  63. selectedIcon={<Icon type="koubei" size="md" />}
  64. title="口碑"
  65. key="口碑"
  66. badge={'new'}
  67. selected={this.state.selectedTab === 'redTab'}
  68. onPress={() => {
  69. this.setState({
  70. selectedTab: 'redTab',
  71. });
  72. }}
  73. data-seed="logId1"
  74. >
  75. {this.renderContent('口碑')}
  76. </TabBar.Item>
  77. <TabBar.Item
  78. icon={
  79. <div style={{
  80. width: '0.44rem',
  81. height: '0.44rem',
  82. background: 'url(https://zos.alipayobjects.com/rmsportal/psUFoAMjkCcjqtUCNPxB.svg) center center / 0.42rem 0.42rem no-repeat' }}
  83. />
  84. }
  85. selectedIcon={
  86. <div style={{
  87. width: '0.44rem',
  88. height: '0.44rem',
  89. background: 'url(https://zos.alipayobjects.com/rmsportal/IIRLrXXrFAhXVdhMWgUI.svg) center center / 0.42rem 0.42rem no-repeat' }}
  90. />
  91. }
  92. title="朋友"
  93. key="朋友"
  94. dot
  95. selected={this.state.selectedTab === 'greenTab'}
  96. onPress={() => {
  97. this.setState({
  98. selectedTab: 'greenTab',
  99. });
  100. }}
  101. >
  102. {this.renderContent('朋友')}
  103. </TabBar.Item>
  104. <TabBar.Item
  105. icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/asJMfBrNqpMMlVpeInPQ.svg' }}
  106. selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/gjpzzcrPMkhfEqgbYvmN.svg' }}
  107. title="我的"
  108. key="我的"
  109. selected={this.state.selectedTab === 'yellowTab'}
  110. onPress={() => {
  111. this.setState({
  112. selectedTab: 'yellowTab',
  113. });
  114. }}
  115. >
  116. {this.renderContent('我的')}
  117. </TabBar.Item>
  118. </TabBar>
  119. );
  120. }
  121. }
  122. ReactDOM.render(<TabBarExample />, mountNode);
  1. #tab-bar.demo {
  2. display: flex;
  3. flex-direction: column;
  4. }
  5. #tab-bar .demoName {
  6. height: 0.8rem;
  7. }
  8. #tab-bar .demo-preview-item,
  9. #tab-bar .demo-preview-item .am-tab-bar {
  10. flex: 1;
  11. display: flex;
  12. flex-direction: column;
  13. }
  14. #tab-bar .demo-preview-item .am-tab-bar {
  15. background-color: white;
  16. }

TabBar标签栏 - 图1

API

适用平台:WEB、React-Native

TabBar

属性说明类型默认值
barTintColortabbar 背景色Stringwhite
tintColor选中的字体颜色String#108ee9
unselectedTintColor未选中的字体颜色String'#888'
hidden (web only)是否隐藏Booleanfalse
prefixCls(web only)样式前缀String'am-tab-bar'

TabBar.Item

属性说明类型默认值
badge徽标数Number \ String
dot(Web Only)是否在右上角显示小红点(在设置badge的情况下失效)Booleanfalse
onPressbar 点击触发,需要自己改变组件 state & selecte={true}Function(){}
selected是否选中Booleanfalse
icon默认展示图片Image Source(rn) \ web 方式见 demo
selectedIcon选中后的展示图片Image Source(rn) \ web 方式见 demo
title标题文字String
key唯一标识String
iconStyleicon 样式 (rn android only)(ios 更多API请参考 tabbarios(https://facebook.github.io/react-native/docs/tabbarios.html)String{ width: 28, height: 28 }