CSS 变量
styled 包对所有视觉值都使用 CSS 自定义属性(变量)。在 .rdrp-root 或任何父元素上覆盖它们,即可在不接触组件代码的情况下自定义外观。
如何覆盖
所有变量都作用于 .rdrp-root 之下。在你自己的 CSS 中覆盖它们:
--rdrp-color-primary: #8b5cf6;
--rdrp-color-primary-hover: #7c3aed;
--rdrp-border-radius-lg: 12px;
或者使用包装器类将覆盖范围限定到特定实例:
.my-purple-picker .rdrp-root {
--rdrp-color-primary: #8b5cf6;
--rdrp-color-primary-hover: #7c3aed;
--rdrp-color-primary-light: #ede9fe;
--rdrp-color-primary-lighter: #f5f3ff;
<div className="my-purple-picker">
<DatePicker value={value} onChange={setValue} />
变量参考
颜色
| 变量 | 默认 (亮色) | 描述 |
|---|
--rdrp-color-primary | #3b82f6 | 主要操作颜色(选中日期、确认按钮) |
--rdrp-color-primary-hover | #2563eb | 主要悬停状态 |
--rdrp-color-primary-light | #dbeafe | 范围背景,浅色主色调 |
--rdrp-color-primary-lighter | #eff6ff | 激活的预设背景 |
--rdrp-color-primary-disabled | #93c5fd | 禁用的确认按钮 |
--rdrp-color-bg | #ffffff | 背景颜色 |
--rdrp-color-bg-hover | #f3f4f6 | 日期、按钮的悬停背景 |
--rdrp-color-bg-subtle | #f9fafb | 次要背景 |
--rdrp-color-text | #374151 | 默认文本颜色 |
--rdrp-color-text-strong | #111827 | 强调文本(标题、活动时间) |
--rdrp-color-text-muted | #6b7280 | 弱化文本(导航按钮、标签) |
--rdrp-color-text-placeholder | #6b7280 | 占位符文本 |
--rdrp-color-text-disabled | #d1d5db | 禁用日期的文本 |
--rdrp-color-text-outside | #9ca3af | 非本月日期的文本 |
--rdrp-color-text-inverse | #ffffff | 主背景上的文本 |
--rdrp-color-text-danger | #ef4444 | 清除/危险按钮的文本 |
--rdrp-color-text-today | #2563eb | 今日指示器颜色 |
--rdrp-color-border | #d1d5db | 默认边框 |
--rdrp-color-border-light | #e5e7eb | 浅色边框(弹窗、选择框) |
--rdrp-color-border-subtle | #f3f4f6 | 次要边框(页脚、预设) |
--rdrp-color-border-hover | #93c5fd | 边框悬停状态 |
--rdrp-color-highlight-dot | #f59e0b | 高亮点的颜色 |
--rdrp-highlight-dot-size | 4px | 高亮点的直径 |
--rdrp-color-range-bg | #dbeafe | 范围内日期的背景 |
--rdrp-color-hover-range-bg | #eff6ff | 悬停范围预览背景 |
--rdrp-color-hover-target-bg | #bfdbfe | 悬停端点背景 |
--rdrp-color-time-highlight | rgba(59, 130, 246, 0.08) | 时间面板高亮条 |
字体
| 变量 | 默认 | 描述 |
|---|
--rdrp-font-family | System font stack | 字体族 |
--rdrp-font-size-xs | 11px | 特小(小尺寸下的星期头部) |
--rdrp-font-size-sm | 12px | 小号(星期头部、标签) |
--rdrp-font-size-base | 13px | 基础(日期单元格、按钮) |
--rdrp-font-size-md | 14px | 中号(触发器、时间项) |
--rdrp-font-size-lg | 15px | 大号(头部标题) |
--rdrp-font-weight-normal | 400 | 常规字重 |
--rdrp-font-weight-medium | 500 | 中等字重 |
--rdrp-font-weight-semibold | 600 | 半粗字重 |
--rdrp-font-weight-bold | 700 | 粗体字重(今日指示器) |
间距
| 变量 | 默认 | 描述 |
|---|
--rdrp-spacing-xs | 2px | 特小间距 |
--rdrp-spacing-sm | 4px | 小间距 |
--rdrp-spacing-md | 8px | 中间距 |
--rdrp-spacing-lg | 12px | 大间距 |
--rdrp-spacing-xl | 16px | 特大间距 |
--rdrp-spacing-2xl | 24px | 2倍特大间距 |
边框
| 变量 | 默认 | 描述 |
|---|
--rdrp-border-radius-sm | 4px | 小圆角 |
--rdrp-border-radius-md | 6px | 中圆角(按钮、选择框) |
--rdrp-border-radius-lg | 8px | 大圆角(日期、触发器) |
--rdrp-border-radius-xl | 12px | 特大圆角(弹窗) |
--rdrp-border-radius-full | 9999px | 全圆角(高亮点) |
--rdrp-border-width | 1px | 边框宽度 |
阴影
| 变量 | 默认 | 描述 |
|---|
--rdrp-shadow-popup | 0 10px 25px rgba(0,0,0,0.1) | 弹窗阴影 |
--rdrp-shadow-inline | 0 4px 12px rgba(0,0,0,0.06) | 内联模式阴影 |
--rdrp-shadow-sm | 0 2px 6px rgba(0,0,0,0.04) | 小阴影 |
尺寸
| 变量 | 默认 | 描述 |
|---|
--rdrp-cell-size | 36px | 日期单元格宽度/高度 |
--rdrp-nav-btn-size | 28px | 导航按钮尺寸 |
--rdrp-weekday-height | 28px | 星期头部行高 |
--rdrp-grid-min-height | 216px | 日历网格最小高度 |
--rdrp-panel-min-width | 252px | 单个日历面板宽度 |
--rdrp-dual-gap | 24px | 双日历之间的间隙 |
--rdrp-trigger-min-width | 200px | 触发器按钮最小宽度 |
--rdrp-trigger-padding-x | 14px | 触发器水平内边距 |
--rdrp-trigger-padding-y | 8px | 触发器垂直内边距 |
--rdrp-popup-padding | 16px | 弹窗内部内边距 |
--rdrp-popup-gap | 6px | 弹窗内容间隙 |
--rdrp-btn-padding-x | 14px | 页脚按钮水平内边距 |
--rdrp-btn-padding-y | 6px | 页脚按钮垂直内边距 |
--rdrp-preset-min-width | 140px | 预设侧边栏最小宽度 |
时间选择器
| 变量 | 默认 | 描述 |
|---|
--rdrp-time-item-height | 32px | 时间滚动项高度 |
--rdrp-time-panel-height | 176px | 时间面板总高度 |
--rdrp-time-column-height | 160px | 可滚动列高度 |
--rdrp-time-panel-min-width | 120px | 时间面板最小宽度 |
--rdrp-time-colon-width | 12px | 冒号分隔符宽度 |
Z-index
| 变量 | 默认 | 描述 |
|---|
--rdrp-z-popup | 50 | 弹窗 z-index |
--rdrp-z-day-button | 20 | 聚焦日期的 z-index |
过渡
| 变量 | 默认 | 描述 |
|---|
--rdrp-transition-fast | 0.1s | 快速过渡(日期悬停) |
--rdrp-transition-normal | 0.15s | 常规过渡(触发器、按钮) |
实时示例
自定义颜色(紫色主题)
覆盖主色变量以创建完全不同的配色方案。此示例使用带有紫罗兰/紫色调的 DatePicker。
import { useState } from "react";
import { DatePicker } from "react-date-range-picker-styled";
import "react-date-range-picker-styled/rdrp-styles.css";
function CustomColors() {
const [value, setValue] = useState<Date | null>(null);
"--rdrp-color-primary": "#7c3aed",
"--rdrp-color-primary-hover": "#6d28d9",
"--rdrp-color-primary-light": "#ede9fe",
"--rdrp-color-primary-lighter": "#f5f3ff",
"--rdrp-color-primary-disabled": "#c4b5fd",
"--rdrp-color-text-today": "#7c3aed",
"--rdrp-color-border-hover": "#c4b5fd",
<DatePicker value={value} onChange={setValue} />
自定义字体 (Serif)
字体通过 CSS 继承,因此将选择器包装在具有自定义 font-family 的 div 中会应用于所有文本。此示例使用带有 Georgia serif 字体的 DateRangePicker。
import { useState } from "react";
import { DateRangePicker } from "react-date-range-picker-styled";
import "react-date-range-picker-styled/rdrp-styles.css";
const [value, setValue] = useState<{ start: Date | null; end: Date | null }>({
<div style={{ fontFamily: "'Georgia', serif" }}>
<DateRangePicker value={value} onChange={setValue} />
直角(无边框圆角)
将所有边框圆角变量设置为 0px 以获得完全方正的外观。
import { useState } from "react";
import { DatePicker } from "react-date-range-picker-styled";
import "react-date-range-picker-styled/rdrp-styles.css";
function CustomBorderRadius() {
const [value, setValue] = useState<Date | null>(null);
"--rdrp-border-radius-sm": "0px",
"--rdrp-border-radius-md": "0px",
"--rdrp-border-radius-lg": "0px",
"--rdrp-border-radius-xl": "0px",
<DatePicker value={value} onChange={setValue} />
通过 CSS 变量自定义尺寸
除了使用内置的 size prop 外,还可以覆盖单个尺寸变量以进行精确控制。此示例使用具有自定义单元格尺寸和字体大小的 DateRangePicker。
import { useState } from "react";
import { DateRangePicker } from "react-date-range-picker-styled";
import "react-date-range-picker-styled/rdrp-styles.css";
const [value, setValue] = useState<{ start: Date | null; end: Date | null }>({
"--rdrp-cell-size": "44px",
"--rdrp-font-size-base": "15px",
"--rdrp-font-size-md": "16px",
"--rdrp-font-size-lg": "18px",
"--rdrp-spacing-sm": "6px",
"--rdrp-spacing-md": "10px",
"--rdrp-spacing-lg": "14px",
<DateRangePicker value={value} onChange={setValue} />