尺寸
styled 包内置了 4 种尺寸变体,可按比例缩放排版、间距、单元格尺寸和触发器尺寸。
可用尺寸
| 尺寸 | 单元格尺寸 | 基础字号 | 触发器最小宽度 |
|---|---|---|---|
small | 28px | 11px | 160px |
medium | 36px | 13px | 200px |
large | 44px | 14px | 240px |
x-large | 52px | 15px | 280px |
默认为 medium。
用法
将 size prop 传递给任何选择器组件:
import { useState } from "react";import { DatePicker } from "react-date-range-picker-styled";import "react-date-range-picker-styled/rdrp-styles.css";import type { DatePickerSize } from "react-date-range-picker-headless";
const sizes: DatePickerSize[] = ["small", "medium", "large", "x-large"];
function Sizes() { const [values, setValues] = useState<Record<DatePickerSize, Date | null>>({ small: null, medium: null, large: null, "x-large": null, });
return ( <div style={{ display: "flex", flexDirection: "column", gap: 20 }}> {sizes.map((size) => ( <div key={size} style={{ display: "flex", alignItems: "center", gap: 12 }}> <span style={{ width: 60, fontSize: 13, fontWeight: 600, opacity: 0.5, flexShrink: 0 }}> {size} </span> <DatePicker value={values[size]} onChange={(date) => setValues((prev) => ({ ...prev, [size]: date }))} size={size} /> </div> ))} </div> );}small
medium
large
x-large
不同尺寸的变化
每个尺寸变体通过一个 CSS 类(例如 rdrp-size-small)覆盖一组 CSS 变量。以下是每个尺寸调整的内容:
Small
.rdrp-size-small { --rdrp-cell-size: 28px; --rdrp-nav-btn-size: 24px; --rdrp-weekday-height: 24px; --rdrp-grid-min-height: 168px; --rdrp-panel-min-width: 196px; --rdrp-dual-gap: 16px;
--rdrp-font-size-xs: 10px; --rdrp-font-size-sm: 11px; --rdrp-font-size-base: 11px; --rdrp-font-size-md: 12px; --rdrp-font-size-lg: 13px;
--rdrp-trigger-min-width: 160px; --rdrp-trigger-padding-x: 10px; --rdrp-trigger-padding-y: 6px; --rdrp-popup-padding: 12px;
--rdrp-btn-padding-x: 10px; --rdrp-btn-padding-y: 4px;
--rdrp-spacing-lg: 8px; --rdrp-spacing-xl: 12px;
--rdrp-time-item-height: 28px; --rdrp-time-panel-height: 148px; --rdrp-time-column-height: 132px; --rdrp-time-panel-min-width: 100px; --rdrp-time-picker-content-min-width: 210px;
--rdrp-preset-min-width: 110px;}Large
.rdrp-size-large { --rdrp-cell-size: 44px; --rdrp-nav-btn-size: 32px; --rdrp-weekday-height: 32px; --rdrp-grid-min-height: 264px; --rdrp-panel-min-width: 308px; --rdrp-dual-gap: 28px;
--rdrp-font-size-xs: 12px; --rdrp-font-size-sm: 13px; --rdrp-font-size-base: 14px; --rdrp-font-size-md: 15px; --rdrp-font-size-lg: 16px;
--rdrp-trigger-min-width: 240px; --rdrp-trigger-padding-x: 16px; --rdrp-trigger-padding-y: 10px; --rdrp-popup-padding: 20px;
--rdrp-btn-padding-x: 16px; --rdrp-btn-padding-y: 8px;
--rdrp-spacing-lg: 16px; --rdrp-spacing-xl: 20px;
--rdrp-time-item-height: 36px; --rdrp-time-panel-height: 196px; --rdrp-time-column-height: 180px; --rdrp-time-panel-min-width: 140px; --rdrp-time-picker-content-min-width: 290px;
--rdrp-preset-min-width: 160px;}X-Large
.rdrp-size-x-large { --rdrp-cell-size: 52px; --rdrp-nav-btn-size: 36px; --rdrp-weekday-height: 36px; --rdrp-grid-min-height: 312px; --rdrp-panel-min-width: 364px; --rdrp-dual-gap: 32px;
--rdrp-font-size-xs: 13px; --rdrp-font-size-sm: 14px; --rdrp-font-size-base: 15px; --rdrp-font-size-md: 16px; --rdrp-font-size-lg: 18px;
--rdrp-trigger-min-width: 280px; --rdrp-trigger-padding-x: 20px; --rdrp-trigger-padding-y: 12px; --rdrp-popup-padding: 24px;
--rdrp-btn-padding-x: 20px; --rdrp-btn-padding-y: 10px;
--rdrp-spacing-lg: 20px; --rdrp-spacing-xl: 24px;
--rdrp-time-item-height: 40px; --rdrp-time-panel-height: 216px; --rdrp-time-column-height: 200px; --rdrp-time-panel-min-width: 160px;
--rdrp-preset-min-width: 180px;}自定义尺寸
通过定义一个覆盖尺寸变量的 CSS 类来创建你自己的尺寸:
.rdrp-size-custom { --rdrp-cell-size: 40px; --rdrp-nav-btn-size: 30px; --rdrp-font-size-base: 14px; --rdrp-font-size-md: 15px; --rdrp-trigger-min-width: 220px; --rdrp-popup-padding: 18px;}然后通过一个包装器应用它:
<div className="rdrp-size-custom"> <DatePicker value={value} onChange={setValue} /></div>或者使用复合组件 API,将类添加到 Root:
<DatePicker.Root value={value} onChange={setValue} className="rdrp-size-custom"> {/* ... */}</DatePicker.Root>你也可以通过内联样式覆盖尺寸变量:
import { useState } from "react";import { DatePicker } from "react-date-range-picker-styled";import "react-date-range-picker-styled/rdrp-styles.css";
function CustomSizeViaCSS() { const [value, setValue] = useState<Date | null>(null);
return ( <div style={{ ["--rdrp-cell-size" as string]: "44px", ["--rdrp-font-size-base" as string]: "15px", ["--rdrp-font-size-md" as string]: "16px", ["--rdrp-font-size-lg" as string]: "18px", ["--rdrp-nav-btn-size" as string]: "34px", ["--rdrp-trigger-padding-x" as string]: "18px", ["--rdrp-trigger-padding-y" as string]: "12px", }} > <DatePicker value={value} onChange={setValue} /> </div> );} 💡 Tip
medium 尺寸是默认值,不应用任何覆盖。 variables.css 中的基础变量即为 medium 的值。