Tabs 标签页

定义/Definition

标签栏用于让用户在不同的子任务、视图和模式中进行切换。

规则 / Rule

  • 标签栏位于屏幕底部,并应该保证在应用内任何位置都可用。标签栏展示图标和文字内容,每一项均保持等宽。当用户选中某个标签时,该标签呈现适当的高亮状态。

  • 一个标签栏一次最多可承载5个标签,最少显示2个

  • 你可以在标签上加上红底白字,显示数字或者省略号的小气泡(badge),用以展示与应用相关的信息。

  • 你可以使用标签栏来切换对同一组数据的不同视图模式,或者整体功能下不同的子任务。

  • 即使标签当前不可用,也不要把它从标签栏中删除。如果某个标签所代表的部分功能在当前场景下不可用,可以将它标识为不可用状态,但不要删除它。让某些标签时而出现时而隐藏,会让用户觉得应用UI不稳定而且难以预测。最好的解决方式是确保每个标签都可用,并解释当前标签不可用的原因。

代码演示

线性型选项卡

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

  1. import { Tabs, WhiteSpace } from 'antd-mobile';
  2. const TabPane = Tabs.TabPane;
  3. function callback(key) {
  4. console.log(key);
  5. }
  6. let TabExample = React.createClass({
  7. render() {
  8. return (
  9. <div>
  10. <Tabs defaultActiveKey="1" onChange={callback}>
  11. <TabPane tab="选项卡一" key="1">选项卡一内容</TabPane>
  12. <TabPane tab="选项卡二" key="2">选项卡二内容</TabPane>
  13. <TabPane tab="选项卡三" key="3">选项卡三内容</TabPane>
  14. </Tabs>
  15. <WhiteSpace />
  16. </div>
  17. );
  18. },
  19. });
  20. ReactDOM.render(<TabExample />, mountNode);

胶囊型选项卡

主要应用在页面的NavBar区块,一般起着控制全局页面内容切换的作用。选项卡的文字内容建议不超过四个。

  1. import { Tabs, WhiteSpace } from 'antd-mobile';
  2. const TabPane = Tabs.TabPane;
  3. function callback(key) {
  4. console.log(key);
  5. }
  6. let TabExample = React.createClass({
  7. render() {
  8. return (
  9. <div>
  10. <WhiteSpace />
  11. <Tabs defaultActiveKey="1" type="capsule" onChange={callback}>
  12. <TabPane tab="选项卡一" key="1">选项卡一内容</TabPane>
  13. <TabPane tab="选项卡二" key="2">选项卡二内容</TabPane>
  14. <TabPane tab="选项卡三" key="3">选项卡三内容</TabPane>
  15. </Tabs>
  16. <WhiteSpace />
  17. </div>
  18. );
  19. },
  20. });
  21. ReactDOM.render(<TabExample />, mountNode);

APP型选项卡

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

  1. import { Tabs, Icon, WhiteSpace } from 'antd-mobile';
  2. const TabPane = Tabs.TabPane;
  3. function callback(key) {
  4. console.log(key);
  5. }
  6. let TabExample = React.createClass({
  7. render() {
  8. return (
  9. <div>
  10. <Tabs type="tabbar" defaultActiveKey="1" onChange={callback}>
  11. <TabPane tab={<span><Icon type="home" />首页</span>} key="1">选项首页内容</TabPane>
  12. <TabPane tab={<span><Icon type="team" />好友</span>} key="2">选项好友内容</TabPane>
  13. <TabPane tab={<span><Icon type="setting" />设置</span>} key="3">选项设置的内容</TabPane>
  14. </Tabs>
  15. <WhiteSpace />
  16. <Tabs type="tabbar" mode="dark" defaultActiveKey="2" onChange={callback}>
  17. <TabPane tab={<span><Icon type="home" />首页</span>} key="1">选项首页内容</TabPane>
  18. <TabPane tab={<span><Icon type="team" />好友</span>} key="2">选项好友内容</TabPane>
  19. <TabPane tab={<span><Icon type="setting" />设置</span>} key="3">选项设置的内容</TabPane>
  20. </Tabs>
  21. </div>
  22. );
  23. },
  24. });
  25. ReactDOM.render(<TabExample />, mountNode);

内容区域无动画

禁用内容区域的切换动画效果

  1. import { Tabs, WhiteSpace, Icon } from 'antd-mobile';
  2. const TabPane = Tabs.TabPane;
  3. function callback(key) {
  4. console.log(key);
  5. }
  6. let TabExample = React.createClass({
  7. render() {
  8. return (
  9. <div>
  10. <WhiteSpace />
  11. <Tabs defaultActiveKey="1" animation={false} onChange={callback}>
  12. <TabPane tab={<span><Icon type="loading" />选项卡一</span>} key="1">选项卡一内容</TabPane>
  13. <TabPane tab="选项卡二" key="2">选项卡二内容</TabPane>
  14. <TabPane tab="选项卡三" key="3">选项卡三内容</TabPane>
  15. </Tabs>
  16. <WhiteSpace />
  17. </div>
  18. );
  19. },
  20. });
  21. ReactDOM.render(<TabExample />, mountNode);

Tabs标签页 - 图1

API

Tabs

参数说明类型默认值
activeKey当前激活 tab 面板的 keyString
defaultActiveKey初始化选中面板的 key,如果没有设置 activeKeyString第一个面板
onChange切换面板的回调Function
onTabClicktab 被点击的回调Function
type页签的基本样式,可选 linecapsuletabbar 类型String'line'
animation内容区域动画, 目前仅支持 slide-horizontal, 设为 false 禁用动画Stringslide-horizontal
modedarklight 仅当 type 为 tabbar 有效String'light'

Tabs.TabPane

参数说明类型默认值
key对应 activeKeyString
tab选项卡头显示文字React.Element or String