Card卡片

通用卡片容器。

何时使用

最基础的卡片容器,可承载文字、列表、图片、段落,常用于后台概览页面。

代码演示

Card 卡片 - 图1

典型卡片

包含标题、内容、操作区域。

  1. import { Card } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <Card title="Card title" extra={<a href="#">More</a>} style={{ width: 300 }}>
  4. <p>Card content</p>
  5. <p>Card content</p>
  6. <p>Card content</p>
  7. </Card>,
  8. mountNode);

Card 卡片 - 图2

无边框

在灰色背景上使用无边框的卡片。

  1. import { Card } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <div style={{ background: '#ECECEC', padding: '30px' }}>
  4. <Card title="Card title" bordered={false} style={{ width: 300 }}>
  5. <p>Card content</p>
  6. <p>Card content</p>
  7. <p>Card content</p>
  8. </Card>
  9. </div>,
  10. mountNode);

Card 卡片 - 图3

简洁卡片

只包含内容区域。

  1. import { Card } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <Card style={{ width: 300 }}>
  4. <p>Card content</p>
  5. <p>Card content</p>
  6. <p>Card content</p>
  7. </Card>,
  8. mountNode);

Card 卡片 - 图4

更灵活的内容展示

可以利用 Card.Meta 支持更灵活的内容。

  1. import { Card } from 'choerodon-ui';
  2. const { Meta } = Card;
  3. ReactDOM.render(
  4. <Card
  5. hoverable
  6. style={{ width: 240 }}
  7. cover={<img alt="example" src="https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png" />}
  8. >
  9. <Meta title="Europe Street beat" description="www.instagram.com" />
  10. </Card>,
  11. mountNode,
  12. );

Card 卡片 - 图5

栅格卡片

在系统概览页面常常和栅格进行配合。

  1. import { Card, Col, Row } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <div style={{ background: '#ECECEC', padding: '30px' }}>
  4. <Row gutter={16}>
  5. <Col span={8}>
  6. <Card title="Card title" bordered={false}>Card content</Card>
  7. </Col>
  8. <Col span={8}>
  9. <Card title="Card title" bordered={false}>Card content</Card>
  10. </Col>
  11. <Col span={8}>
  12. <Card title="Card title" bordered={false}>Card content</Card>
  13. </Col>
  14. </Row>
  15. </div>,
  16. mountNode);

Card 卡片 - 图6

预加载的卡片

数据读入前会有文本块样式。

  1. import { Card } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <Card loading title="Card title" style={{ width: '34%' }}>
  4. Whatever content
  5. </Card>,
  6. mountNode);

Card 卡片 - 图7

网格型内嵌卡片

一种常见的卡片内容区隔模式。

  1. import { Card } from 'choerodon-ui';
  2. const gridStyle = {
  3. width: '25%',
  4. textAlign: 'center',
  5. };
  6. ReactDOM.render(
  7. <Card title="Card Title">
  8. <Card.Grid style={gridStyle}>Content</Card.Grid>
  9. <Card.Grid style={gridStyle}>Content</Card.Grid>
  10. <Card.Grid style={gridStyle}>Content</Card.Grid>
  11. <Card.Grid style={gridStyle}>Content</Card.Grid>
  12. <Card.Grid style={gridStyle}>Content</Card.Grid>
  13. <Card.Grid style={gridStyle}>Content</Card.Grid>
  14. <Card.Grid style={gridStyle}>Content</Card.Grid>
  15. </Card>,
  16. mountNode);

Card 卡片 - 图8

内部卡片

可以放在普通卡片内部,展示多层级结构的信息。

  1. import { Card } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <Card title="Card title">
  4. <p
  5. style={{
  6. fontSize: 14,
  7. color: 'rgba(0, 0, 0, 0.85)',
  8. marginBottom: 16,
  9. fontWeight: 500,
  10. }}
  11. >
  12. Group title
  13. </p>
  14. <Card
  15. type="inner"
  16. title="Inner Card title"
  17. extra={<a href="#">More</a>}
  18. >
  19. Inner Card content
  20. </Card>
  21. <Card
  22. style={{ marginTop: 16 }}
  23. type="inner"
  24. title="Inner Card title"
  25. extra={<a href="#">More</a>}
  26. >
  27. Inner Card content
  28. </Card>
  29. </Card>,
  30. mountNode);

Card 卡片 - 图9

带页签的卡片

可承载更多内容。

  1. import { Card } from 'choerodon-ui';
  2. const tabList = [{
  3. key: 'tab1',
  4. tab: 'tab1',
  5. }, {
  6. key: 'tab2',
  7. tab: 'tab2',
  8. }];
  9. const contentList = {
  10. tab1: <p>content1</p>,
  11. tab2: <p>content2</p>,
  12. };
  13. const tabListNoTitle = [{
  14. key: 'article',
  15. tab: 'article',
  16. }, {
  17. key: 'app',
  18. tab: 'app',
  19. }, {
  20. key: 'project',
  21. tab: 'project',
  22. }];
  23. const contentListNoTitle = {
  24. article: <p>article content</p>,
  25. app: <p>app content</p>,
  26. project: <p>project content</p>,
  27. };
  28. class TabsCard extends React.Component {
  29. state = {
  30. key: 'tab1',
  31. noTitleKey: 'app',
  32. }
  33. onTabChange = (key, type) => {
  34. console.log(key, type);
  35. this.setState({ [type]: key });
  36. }
  37. render() {
  38. return (
  39. <div>
  40. <Card
  41. style={{ width: '100%' }}
  42. title="Card title"
  43. extra={<a href="#">More</a>}
  44. tabList={tabList}
  45. onTabChange={(key) => { this.onTabChange(key, 'key'); }}
  46. >
  47. {contentList[this.state.key]}
  48. </Card>
  49. <br /><br />
  50. <Card
  51. style={{ width: '100%' }}
  52. tabList={tabListNoTitle}
  53. activeTabKey={this.state.noTitleKey}
  54. onTabChange={(key) => { this.onTabChange(key, 'noTitleKey'); }}
  55. >
  56. {contentListNoTitle[this.state.noTitleKey]}
  57. </Card>
  58. </div>
  59. );
  60. }
  61. }
  62. ReactDOM.render(
  63. <TabsCard />,
  64. mountNode);

Card 卡片 - 图10

支持更多内容配置

一种支持封面、头像、标题和描述信息的卡片。

  1. import { Card, Icon, Avatar } from 'choerodon-ui';
  2. const { Meta } = Card;
  3. ReactDOM.render(
  4. <Card
  5. style={{ width: 300 }}
  6. cover={
  7. <img
  8. alt="example"
  9. src="https://gw.alipayobjects.com/zos/rmsportal/JiqGstEfoWAOHiTxclqi.png"
  10. />
  11. }
  12. actions={[
  13. <Icon key="setting" type="setting" />,
  14. <Icon key="edit" type="edit" />,
  15. <Icon key="ellipsis" type="ellipsis" />,
  16. ]}
  17. >
  18. <Meta
  19. avatar={<Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />}
  20. title="Card title"
  21. description="This is the description"
  22. />
  23. </Card>,
  24. mountNode,
  25. );

API

  1. <Card title="卡片标题">卡片内容</Card>

Card

参数说明类型默认值
actions卡片操作组,位置在卡片底部Array-
bodyStyle内容区域自定义样式object-
bordered是否有边框booleantrue
cover卡片封面ReactNode-
extra卡片右上角的操作区域string|ReactNode-
hoverable鼠标移过时可浮起booleanfalse
loading当卡片内容还在加载中时,可以用 loading 展示一个占位booleanfalse
tabList页签标题列表Array<{key: string, tab: ReactNode}>-
activeTabKey当前激活页签的 keystring-
defaultActiveTabKey初始化选中页签的 key,如果没有设置 activeTabKeystring第一个页签
title卡片标题string|ReactNode-
type卡片类型,可设置为 inner 或 不设置string-
onTabChange页签切换的回调(key) => void-
onHeadClick卡片头部的点击事件React.MouseEventHandler-

Card.Grid

PropertyDescriptionTypeDefault
className网格容器类名string-
style定义网格容器类名的样式object-

Card.Meta

PropertyDescriptionTypeDefault
avatar头像/图标ReactNode-
className容器类名string-
description描述内容ReactNode-
style定义容器类名的样式object-
title标题内容ReactNode-