Card 卡片

通用卡片容器。

何时使用

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

代码演示

典型卡片

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

Card卡片 - 图1

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

无边框

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

Card卡片 - 图2

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

简洁卡片

只包含内容区域。

Card卡片 - 图3

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Card } from 'choerodon-ui';
  4. ReactDOM.render(
  5. <Card style={{ width: 300 }}>
  6. <p>Card content</p>
  7. <p>Card content</p>
  8. <p>Card content</p>
  9. </Card>,
  10. document.getElementById('container'));

更灵活的内容展示

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

Card卡片 - 图4

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

栅格卡片

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

Card卡片 - 图5

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

预加载的卡片

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

Card卡片 - 图6

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

网格型内嵌卡片

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

Card卡片 - 图7

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Card } from 'choerodon-ui';
  4. const gridStyle = {
  5. width: '25%',
  6. textAlign: 'center',
  7. };
  8. ReactDOM.render(
  9. <Card title="Card Title">
  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.Grid style={gridStyle}>Content</Card.Grid>
  16. <Card.Grid style={gridStyle}>Content</Card.Grid>
  17. </Card>,
  18. document.getElementById('container'));

内部卡片

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

Card卡片 - 图8

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

带页签的卡片

可承载更多内容。

Card卡片 - 图9

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Card } from 'choerodon-ui';
  4. const tabList = [{
  5. key: 'tab1',
  6. tab: 'tab1',
  7. }, {
  8. key: 'tab2',
  9. tab: 'tab2',
  10. }];
  11. const contentList = {
  12. tab1: <p>content1</p>,
  13. tab2: <p>content2</p>,
  14. };
  15. const tabListNoTitle = [{
  16. key: 'article',
  17. tab: 'article',
  18. }, {
  19. key: 'app',
  20. tab: 'app',
  21. }, {
  22. key: 'project',
  23. tab: 'project',
  24. }];
  25. const contentListNoTitle = {
  26. article: <p>article content</p>,
  27. app: <p>app content</p>,
  28. project: <p>project content</p>,
  29. };
  30. class TabsCard extends React.Component {
  31. state = {
  32. key: 'tab1',
  33. noTitleKey: 'app',
  34. }
  35. onTabChange = (key, type) => {
  36. console.log(key, type);
  37. this.setState({ [type]: key });
  38. }

支持更多内容配置

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

Card卡片 - 图10

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

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-