使用import { Calendar } from 'antd'; |
文档贡献者
当数据是日期或按照日期划分时,例如日程、课表、价格日历等,农历等。目前支持年/月切换。
通用属性参考:通用属性
注意:Calendar 部分 locale 是从 value 中读取,所以请先正确设置 dayjs 的 locale。
// 默认语言为 en-US,所以如果需要使用其他语言,推荐在入口文件全局设置 locale// import dayjs from 'dayjs';// import 'dayjs/locale/zh-cn';// dayjs.locale('zh-cn');<Calendar cellRender={cellRender} onPanelChange={onPanelChange} onSelect={onSelect} />
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| cellRender | 自定义单元格的内容 | function(current: dayjs, info: { prefixCls: string, originNode: React.ReactElement, today: dayjs, range?: 'start' | 'end', type: PanelMode, locale?: Locale, subType?: 'hour' | 'minute' | 'second' | 'meridiem' }) => React.ReactNode | - | 5.4.0 |
| classNames | 用于自定义组件内部各语义化结构的 class,支持对象或函数 | Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string> | - | |
| dateFullCellRender | 自定义渲染日期单元格,返回内容覆盖单元格,>= 5.4.0 请用 fullCellRender | function(date: Dayjs): ReactNode | - | < 5.4.0 |
| fullCellRender | 自定义单元格的内容 | function(current: dayjs, info: { prefixCls: string, originNode: React.ReactElement, today: dayjs, range?: 'start' | 'end', type: PanelMode, locale?: Locale, subType?: 'hour' | 'minute' | 'second' | 'meridiem' }) => React.ReactNode | - | 5.4.0 |
| defaultValue | 默认展示的日期 | dayjs | - | |
| disabledDate | 不可选择的日期,参数为当前 value,注意使用时不要直接修改 | (currentDate: Dayjs) => boolean | - | |
| fullscreen | 是否全屏显示 | boolean | true | |
| showWeek | 是否显示周数列 | boolean | false | 5.23.0 |
| styles | 用于自定义组件内部各语义化结构的行内 style,支持对象或函数 | Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties> | - | |
| headerRender | 自定义头部内容 | function(object:{value: Dayjs, type: 'year' | 'month', onChange: f(), onTypeChange: f()}) | - | |
| locale | 国际化配置 | object | (默认配置) | |
| mode | 初始模式 | month | year | month | |
| validRange | 设置可以显示的日期 | [dayjs, dayjs] | - | |
| value | 展示日期 | dayjs | - | |
| onChange | 日期变化回调 | function(date: Dayjs) | - | |
| onPanelChange | 日期面板变化回调 | function(date: Dayjs, mode: string) | - | |
| onSelect | 选择日期回调,包含来源信息 | function(date: Dayjs, info: { source: 'year' | 'month' | 'date' | 'customize' }) | - | info: 5.6.0 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 01 | 02 | 03 |
04 | 05 | 06 | 07 | 08 | 09 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |
| Token 名称 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| fullBg | 完整日历背景色 | string | #ffffff |
| fullPanelBg | 完整日历面板背景色 | string | #ffffff |
| itemActiveBg | 日期项选中背景色 | string | #e6f4ff |
| miniContentHeight | 迷你日历内容高度 | string | number | 256 |
| monthControlWidth | 月选择器宽度 | string | number | 70 |
| yearControlWidth | 年选择器宽度 | string | number | 80 |
| Token 名称 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| colorBgContainer | 组件的容器背景色,例如:默认按钮、输入框等。务必不要将其与 `colorBgElevated` 混淆。 | string | #ffffff |
| colorFillSecondary | 二级填充色可以较为明显地勾勒出元素形体,如 Rate、Skeleton 等。也可以作为三级填充色的 Hover 状态,如 Table 等。 | string | rgba(0,0,0,0.06) |
| colorIcon | 控制弱操作图标的颜色,例如 allowClear 或 Alert 关闭按钮。 * | string | rgba(0,0,0,0.45) |
| colorIconHover | 控制弱操作图标在悬浮状态下的颜色,例如 allowClear 或 Alert 关闭按钮。 | string | rgba(0,0,0,0.88) |
| colorPrimary | 品牌色是体现产品特性和传播理念最直观的视觉元素之一。在你完成品牌主色的选取之后,我们会自动帮你生成一套完整的色板,并赋予它们有效的设计语义 | string | #1677ff |
| colorSplit | 用于作为分割线的颜色,此颜色和 colorBorderSecondary 的颜色一致,但是用的是透明色。 | string | rgba(5,5,5,0.06) |
| colorText | 最深的文本色。为了符合W3C标准,默认的文本颜色使用了该色,同时这个颜色也是最深的中性色。 | string | rgba(0,0,0,0.88) |
| colorTextDisabled | 控制禁用状态下的字体颜色。 | string | rgba(0,0,0,0.25) |
| colorTextHeading | 控制标题字体颜色。 | string | rgba(0,0,0,0.88) |
| colorTextLightSolid | 控制带背景色的文本,例如 Primary Button 组件中的文本高亮颜色。 | string | #fff |
| colorTextTertiary | 第三级文本色一般用于描述性文本,例如表单的中的补充说明文本、列表的描述性文本等场景。 | string | rgba(0,0,0,0.45) |
| borderRadiusLG | LG号圆角,用于组件中的一些大圆角,如 Card、Modal 等一些组件样式。 | number | 8 |
| borderRadiusSM | SM号圆角,用于组件小尺寸下的圆角,如 Button、Input、Select 等输入类控件在 small size 下的圆角 | number | 4 |
| controlHeightLG | 较高的组件高度 | number | 40 |
| controlHeightSM | 较小的组件高度 | number | 24 |
| controlItemBgActive | 控制组件项在激活状态下的背景颜色。 | string | #e6f4ff |
| controlItemBgHover | 控制组件项在鼠标悬浮时的背景颜色。 | string | rgba(0,0,0,0.04) |
| fontFamily | Ant Design 的字体家族中优先使用系统默认的界面字体,同时提供了一套利于屏显的备用字体库,来维护在不同平台以及浏览器的显示下,字体始终保持良好的易读性和可读性,体现了友好、稳定和专业的特性。 | string | -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji' |
| fontSize | 设计系统中使用最广泛的字体大小,文本梯度也将基于该字号进行派生。 | number | 14 |
| fontWeightStrong | 控制标题类组件(如 h1、h2、h3)或选中项的字体粗细。 | number | 600 |
| lineHeight | 文本行高 | number | 1.5714285714285714 |
| lineType | 用于控制组件边框、分割线等的样式,默认是实线 | string | solid |
| lineWidth | 用于控制组件边框、分割线等的宽度 | number | 1 |
| lineWidthBold | 描边类组件的默认线宽,如 Button、Input、Select 等输入类控件。 | number | 2 |
| marginXS | 控制元素外边距,小尺寸。 | number | 8 |
| marginXXS | 控制元素外边距,最小尺寸。 | number | 4 |
| motionDurationMid | 动效播放速度,中速。用于中型元素动画交互 | string | 0.2s |
| motionDurationSlow | 动效播放速度,慢速。用于大型元素如面板动画交互 | string | 0.3s |
| padding | 控制元素的内间距。 | number | 16 |
| paddingSM | 控制元素的小内间距。 | number | 12 |
| paddingXS | 控制元素的特小内间距。 | number | 8 |
| paddingXXS | 控制元素的极小内间距。 | number | 4 |
| screenXS | 控制超小屏幕的屏幕宽度。 | number | 480 |
参考 使用自定义日期库。
参考 如何给日期类组件配置国际化。
参考 FAQ 为什么时间类组件的国际化 locale 设置不生效?。
onSelect 事件提供额外的来源信息,你可以通过 info.source 来判断来源:
<CalendaronSelect={(date, { source }) => {if (source === 'date') {console.log('Panel Select:', source);}}}/>
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 01 | 02 | 03 |
04 | 05 | 06 | 07 | 08 | 09 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 01 | 02 | 03 |
04 | 05 | 06 | 07 | 08
| 09 | 10
|
11 | 12 | 13 | 14 | 15
| 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 01 | 02 | 03 |
04 | 05 | 06 | 07 | 08 | 09 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
26 | 27 | 28 | 29 | 30 | 31 | 01 |
02 | 03 | 04 | 05 | 06 | 07 | 08 |
09 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | 01 | 02 | 03 | 04 | 05 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
27 十一 | 28 十二 | 29 十三 | 30 十四 | 1 劳动节 | 2 十六 | 3 十七 |
4 十八 | 5 立夏 | 6 二十 | 7 廿一 | 8 廿二 | 9 廿三 | 10 廿四 |
11 廿五 | 12 廿六 | 13 廿七 | 14 廿八 | 15 廿九 | 16 三十 | 17 初一 |
18 初二 | 19 初三 | 20 初四 | 21 小满 | 22 初六 | 23 初七 | 24 初八 |
25 初九 | 26 初十 | 27 十一 | 28 十二 | 29 十三 | 30 十四 | 31 十五 |
1 十六 | 2 十七 | 3 十八 | 4 十九 | 5 芒种 | 6 廿一 | 7 廿二 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 | |
|---|---|---|---|---|---|---|---|
18 | 27 | 28 | 29 | 30 | 01 | 02 | 03 |
19 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
20 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
21 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
23 | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 | |
|---|---|---|---|---|---|---|---|
18 | 27 | 28 | 29 | 30 | 01 | 02 | 03 |
19 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
20 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
21 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
23 | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 01 | 02 | 03 |
04 | 05 | 06 | 07 | 08 | 09 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 01 | 02 | 03 |
04 | 05 | 06 | 07 | 08 | 09 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 01 | 02 | 03 |
04 | 05 | 06 | 07 | 08 | 09 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |