深蓝色 UI 规范 · 02 表单(§14–§21)
《深蓝色 UI 规范》分册之一。基础令牌见 00-基础-色彩字体间距.md,可 import 的变量见 tokens.css,总目录与 §索引见 README.md。§N 编号全局唯一。
本篇目录:14 输入框 · 15 选择器 · 16 单选与多选 · 17 日期选择器 · 18 穿梭框 · 19 树选择 · 20 上传 · 21 弹出式窗口
14. 输入框(搜索框)
对应设计稿「输入框.png」。按使用场景分三类:基本搜索框 / 后台系统搜索框 / 页面头部搜索框。配色全部从 ZS-002 主色蓝与 ZS-004 深蓝系取。
14.1 公共规格
所有搜索框共用同一套尺寸 / 边框规格:
| 属性 |
默认(正常) |
小号 |
| 高度 |
32px |
28px |
| 水平 padding |
--spacing-3 (12px) |
--spacing-2 (8px) |
| 圆角 |
2px(§4.1) |
2px |
| 字号 |
14px Regular |
14px Regular |
| 文字色 |
#C5CFE0 (ZS-004-02) |
同 |
| 占位符色 |
#6E88B0 (ZS-004-04) |
同 |
| 背景 |
#0C1836 (ZS-004-09) |
同 |
14.1.1 边框状态
| 状态 |
边框 |
来源 |
| 默认 |
1px solid #1A2F5A |
ZS-004-07 |
| Hover |
1px solid #4096FF |
ZS-002-05 |
| Focus |
1px solid #1677FF + 外发光 0 0 0 2px rgba(22,119,255,0.16) |
ZS-002-06 |
| 失效 |
1px solid #2D4473,背景 rgba(22,119,255,0.04) |
ZS-004-06 |
| 错误 |
1px solid #F5222D + 外发光 0 0 0 2px rgba(245,34,45,0.16) |
ZS-001-06 |
14.2 基本搜索框
14.2.1 基础搜索框
输入框尾部带 🔍 图标,回车或点击图标触发搜索:
[ 搜索 🔍 ]
| 角色 |
色值 / 规格 |
来源 |
| 搜索图标 🔍 |
16px,#6E88B0 |
ZS-004-04 |
| 图标 hover |
#4096FF |
ZS-002-05 |
| 图标 → 输入边缘间距 |
--spacing-2 (8px) |
— |
14.2.2 分类搜索框(带前缀下拉)
输入框左侧拼一个分类下拉,常用于「按协议搜 IP」等场景:
[ http:// ▾ ] [ 搜索 IP 地址 🔍 ]
| 角色 |
色值 / 规格 |
备注 |
| 前缀下拉宽度 |
auto,最小 72px |
内容自适应 |
| 前缀下拉与输入框 |
共用同一组边框,中间无缝(公用一条 1px #1A2F5A 分隔) |
视为一体控件 |
前缀下拉箭头 ▾ |
12px,#6E88B0 |
hover → #4096FF |
| 整体 focus 行为 |
焦点落到输入框时,前缀下拉的边框也同步高亮 |
— |
14.3 后台系统常用搜索框
输入框 + 紧贴右侧的实心蓝色搜索按钮,常用于后台主内容区列表筛选:
[ 🔍 搜索任务集名称/负责人 ] [ 搜索 ]
14.3.1 规格
| 元素 |
色值 / 规格 |
来源 |
| 左侧搜索图标 🔍 |
16px,#6E88B0 |
ZS-004-04 |
| 图标 → 文字间距 |
--spacing-2 (8px) |
— |
| 输入框右边框 |
无(与按钮无缝拼接) |
— |
| 按钮 |
沿用 §5.2.1 主按钮,圆角 2px,文字 搜索 |
— |
| 按钮高度 |
与输入框一致 32px |
— |
| 按钮左侧 |
与输入框紧贴,无间距 |
— |
14.4 页面头部搜索框
页头位置的搜索控件,支持四种扩展:单行 / 高级搜索 / 历史记录 / 输入联想。
14.4.1 单行(最简)
[ 输入的文字 ] [ 搜索 ]
规格同 §14.3,仅省略左侧 🔍 图标,让输入文字占满。
14.4.2 含高级搜索切换
右侧叠加一个文字按钮「高级搜索 ▾」,展开后显示模式选项:
[ 输入的文字 ] [ 搜索 ] 高级搜索 ▾
○ 模糊匹配 ● 精准匹配
| 元素 |
色值 / 规格 |
来源 |
| 「高级搜索 ▾」文字按钮 |
14px Regular,#4096FF,hover #1677FF |
ZS-002-05 → ZS-002-06 |
| 「高级搜索」与「搜索」按钮间距 |
--spacing-3 (12px) |
— |
| 单选项「模糊匹配 / 精准匹配」 |
沿用通用 Radio 配色:未选 1px solid #6E88B0,已选实心 #1677FF |
— |
| 单选项 → 搜索框纵向间距 |
--spacing-2 (8px) |
— |
14.4.3 含历史记录
输入框下方显示最近搜索词列表,点击直接用该词搜索:
[ 输入的文字 ] [ 搜索 ]
搜索记录词、搜索记录词、记录词
| 元素 |
色值 / 规格 |
来源 |
| 历史记录文字 |
12px Regular,#4096FF |
ZS-002-05 |
项间分隔符(顿号 、) |
#4A6491 |
ZS-004-05(与文字色不同,弱化分隔) |
| 历史项 hover |
#1677FF + 下划线 |
ZS-002-06 |
| 历史区与搜索框纵向间距 |
--spacing-2 (8px) |
— |
14.4.4 含输入联想下拉
用户输入时,下方弹出联想词面板:
[ 这是 ] [ 搜索 ]
┌─────────────────────────────────┐
│ 这是搜索输入联想词 │
│ 这是搜索输入联想词 │
│ 这是搜索输入联想词 │
│ 这是联想词 │
│ 这是联想词悬浮 ←hovered │
│ …… │
└─────────────────────────────────┘
面板规格
| 属性 |
取值 |
| 背景 |
#122347 (ZS-004-08) |
| 边框 |
1px solid #1A2F5A (ZS-004-07) |
| 阴影 |
0 4px 16px rgba(6, 14, 36, 0.6)(§3.1.4 三级阴影变体) |
| 圆角 |
2px(与输入框一致) |
| 项高度 |
36px |
| 项水平 padding |
--spacing-3 (12px) |
| 项字号 |
14px Regular,#C5CFE0 (ZS-004-02) |
| 面板宽度 |
与输入框等宽(不含右侧按钮) |
| 面板与输入框纵向间距 |
--spacing-1 (4px) |
项状态
| 状态 |
背景 |
文字 |
| 默认 |
transparent |
#C5CFE0 |
| Hover(鼠标 / 键盘焦点) |
rgba(22,119,255,0.16) 或 #1A2F5A (ZS-004-07) |
#FFFFFF |
| 已点击(点选后回填输入框) |
— |
— |
键盘导航
↑ / ↓ 在联想词之间移动焦点(焦点项视觉等价于 Hover)
Enter 选中焦点项并回填输入框 + 触发搜索
Esc 关闭面板,焦点回到输入框
14.4.5 联想下拉 + 历史记录的关系
- 未输入时:可显示历史记录(§14.4.3 横向展开形态)
- 开始输入时:历史记录被联想下拉取代,不要并存
- 清空输入框:回到历史记录显示
14.5 三种搜索框的选用决策
| 场景 |
选择 |
| 表单内 / 卡片内的辅助搜索 |
§14.2.1 基础搜索框(图标内嵌) |
| 需要按类型 / 协议过滤的搜索 |
§14.2.2 分类搜索框(带前缀下拉) |
| 后台列表 / 表格顶部筛选 |
§14.3 后台搜索框(输入 + 实心按钮) |
| 页面头部全局搜索 |
§14.4 页面头部搜索框(按需开启高级 / 历史 / 联想) |
14.6 CSS Token 参考
:root {
--search-bg: #0C1836; /* ZS-004-09 */
--search-border: #1A2F5A; /* ZS-004-07 */
--search-border-hover: #4096FF; /* ZS-002-05 */
--search-border-focus: #1677FF; /* ZS-002-06 */
--search-border-error: #F5222D; /* ZS-001-06 */
--search-text: #C5CFE0; /* ZS-004-02 */
--search-placeholder: #6E88B0; /* ZS-004-04 */
--search-icon: #6E88B0;
--search-icon-hover: #4096FF;
/* 联想下拉 */
--suggest-bg: #122347; /* ZS-004-08 */
--suggest-item-hover: rgba(22,119,255,0.16);
--suggest-item-text: #C5CFE0;
--suggest-item-hover-text: #FFFFFF;
/* 历史记录 */
--history-text: #4096FF;
--history-text-hover: #1677FF;
--history-sep: #4A6491;
}
15. 选择器(Select / Multi-Select / Cascader)
对应设计稿「多项选择.png」。覆盖多项选择与多项带搜索两种主要变体(基础单选选择器同规格,仅触发器不渲染 Tag、面板项不带复选框;级联选择器原则相同,差异在面板分栏横向铺开)。配色全部从 §1.1.3 渐蓝系(ZS-002)与 §1.1.5 深蓝系(ZS-004)取,与 §14 搜索框完全对齐。
15.1 公共规格
15.1.1 触发器(Trigger)
触发器即「请选择 ▾」或「已选 Tag … ▾」那一行。尺寸、边框、状态机与 §14.1 输入框完全对齐:
| 属性 |
取值 |
来源 |
| 高度 |
32px |
§14.1 |
| 圆角 |
2px |
§4.1 |
| 水平 padding |
--spacing-3 (12px) |
§7.1 |
| 背景 |
#0C1836 (ZS-004-09) |
— |
| 边框 |
1px solid #1A2F5A (ZS-004-07) |
— |
| 占位文字 "请选择" |
14px Regular,#6E88B0 (ZS-004-04) |
— |
右侧箭头 ▾ |
12px,#6E88B0,hover #4096FF |
ZS-002-05 |
边框状态机(默认 / hover / focus / 失效 / 错误)直接复用 §14.1.1。
15.1.2 下拉面板(Panel)
面板沿用 §14.4.4 联想下拉的容器规格,仅项内容不同:
| 属性 |
取值 |
| 背景 |
#122347 (ZS-004-08) |
| 边框 |
1px solid #1A2F5A (ZS-004-07) |
| 阴影 |
0 4px 16px rgba(6, 14, 36, 0.6)(§3.1.4 三级阴影) |
| 圆角 |
2px |
| 项高度 |
36px |
| 项水平 padding |
--spacing-3 (12px) |
| 项字号 |
14px Regular,#C5CFE0 (ZS-004-02) |
| 面板宽度 |
与触发器等宽(搜索框、底部按钮均内嵌等宽) |
| 面板与触发器纵向间距 |
--spacing-1 (4px) |
15.1.3 项状态
| 状态 |
背景 |
文字 |
| 默认 |
transparent |
#C5CFE0 (ZS-004-02) |
| Hover / 键盘焦点 |
rgba(22,119,255,0.16) 或 #1A2F5A |
#FFFFFF |
| 已选中 |
transparent(依赖左侧复选框示态,不改行底色) |
#FFFFFF |
| 禁用 |
transparent |
#4A6491 (ZS-004-05) |
点击行的任意位置等价于点击复选框(命中区 = 整行)。
15.2 多项选择
触发器内渲染已选 Tag 列表而不是单行文字;面板项左侧带复选框,多选不关闭面板。
┌─────────────────────────────────────┐
│ n1 × n2 × +1 × ▾ │ ← 触发器(已选 Tag)
└─────────────────────────────────────┘
┌─────────────────────────────────────┐ ← 下拉面板
│ ☑ n1 │
│ ☐ n2 │
│ ☐ n3 │
│ ☐ n4 │
│ ☐ n5 │
├─────────────────────────────────────┤
│ [+ 添加项] │ ← 可选:底部「添加」按钮(§15.2.4)
└─────────────────────────────────────┘
15.2.1 已选 Tag
触发器内每个已选项渲染为一颗 Tag。实心主色蓝底 + 白字,右侧带关闭按钮 ×。
| 元素 |
色值 / 规格 |
来源 |
| 背景 |
#1677FF (ZS-002-06) |
— |
| 文字 |
12px Regular,#FFFFFF |
— |
| 圆角 |
2px |
— |
| 内边距 |
2px 6px |
— |
| Tag 间距 |
--spacing-1 (4px) |
§7.1 |
关闭按钮 × |
12px,rgba(255,255,255,0.72),hover #FFFFFF |
— |
折叠展示 +N × |
当选中超过宽度可容纳时,把剩余 N 项收成一颗 +N × Tag。Hover 显示 Tooltip 列出剩余项名;点击 × 清空溢出选项 |
— |
15.2.2 复选项
| 元素 |
色值 / 规格 |
来源 |
| 复选框尺寸 |
14px × 14px |
— |
| 复选框圆角 |
2px |
— |
| 未选边框 |
1px solid #6E88B0 (ZS-004-04) |
— |
| 未选背景 |
transparent |
— |
| 已选填充 |
#1677FF (ZS-002-06) |
— |
| 已选勾 ✓ |
#FFFFFF,描边 2px |
— |
| 半选填充 |
#1677FF |
— |
| 半选指示 |
中央横线 width 8px / height 2px / #FFFFFF |
— |
| Hover 边框 |
#4096FF (ZS-002-05) |
— |
| 禁用边框 |
#4A6491 (ZS-004-05) + 背景 rgba(22,119,255,0.04) |
— |
| 复选框 → 文字间距 |
--spacing-2 (8px) |
§7.1 |
15.2.3 全选模式(顶部「全部」节点)
面板首行可选地渲染一个「全部」聚合节点,作用类似一次性勾 / 取消所有项:
┌─────────────────────────────────────┐
│ ▢ 全部 │ ← 半选 / 未选 / 全选三态
│ ☑ n1 │
│ ☐ n2 │
└─────────────────────────────────────┘
| 子状态 |
复选框外观 |
触发动作 |
| 一个都没选 |
空心,边框 #6E88B0 |
点击 → 勾上全部子项 |
| 部分选中 |
实心 #1677FF + 中央 2px 白色横线(半选) |
点击 → 勾上全部剩余未选 |
| 全部选中 |
实心 #1677FF + 白色勾 ✓ |
点击 → 清空全部 |
文字 "全部" 与下方项同色 #C5CFE0,不加粗。
15.2.4 底部「+ 添加项」按钮
面板底部可选地嵌入一颗虚线主色按钮,常用于「在已知池子里允许用户就地新增一项」(如标签、自定义分类):
┌─────────────────────────────────────┐
│ [+ 正常] │
└─────────────────────────────────────┘
| 元素 |
色值 / 规格 |
来源 |
| 高度 |
32px(与复选项行齐) |
— |
| 边框 |
1px dashed #1677FF (ZS-002-06) |
— |
| 背景 |
transparent |
— |
| 文字 |
14px Regular,#4096FF (ZS-002-05) |
— |
前缀图标 + |
12px,与文字同色 |
— |
| Hover |
背景 rgba(22,119,255,0.16),文字 #1677FF |
ZS-002-05 → ZS-002-06 |
| Active |
背景 rgba(22,119,255,0.24),文字 #FFFFFF |
— |
| 与最后一条复选项纵向分隔 |
上方分割线 1px solid #1A2F5A + --spacing-1 (4px) 间距 |
§6.1 |
点击行为由业务自行实现(如弹出输入框、内联编辑)。
15.3 多项带搜索
在 §15.2 基础上,面板顶部嵌入一行搜索框,输入时实时过滤复选项列表。其它结构(已选 Tag / 复选项 / 全选 / 底部添加)完全沿用 §15.2。
┌─────────────────────────────────────┐
│ n1 × +1 × ▾ │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ [ 搜索 🔍 ] │ ← 嵌入式搜索框(§15.3.1)
├─────────────────────────────────────┤
│ ▢ 全部 │
│ ☑ n1 │
│ ☐ n2 │
│ ☐ n3 │
└─────────────────────────────────────┘
15.3.1 嵌入式搜索框
搜索框尺寸采用 §14.1 公共规格的小号(高度 28px),保持与面板视觉上的"嵌入感":
| 属性 |
取值 |
| 高度 |
28px(小号) |
| 水平 padding |
--spacing-2 (8px) |
| 圆角 |
2px |
| 背景 |
#0C1836 (ZS-004-09,比面板背景深一档) |
| 边框 |
1px solid #1A2F5A (ZS-004-07) |
| 文字 |
14px Regular,#C5CFE0 |
| 占位符 |
"搜索",#6E88B0 |
| 右侧 🔍 / ⊗ 图标 |
14px,#6E88B0,hover #4096FF |
| 搜索框 → 列表项纵向间距 |
--spacing-2 (8px) + 分割线 1px solid #1A2F5A |
输入非空时右侧图标切换为 ⊗(清空),点击清空输入并恢复完整列表。
15.3.2 加载与空状态
异步获取选项(如远程搜索)时,列表区按以下规则渲染:
| 状态 |
渲染 |
| 加载中 |
文字 "加载中…",单行居左,14px Regular,#6E88B0,行高 32px |
| 无匹配 |
文字 "无匹配项",同上 |
| 网络错误 |
文字 "加载失败,点击重试",#FF7875 (ZS-001-04),可点击 |
15.4 选用决策
| 场景 |
选择 |
| 候选池 ≤ 10 项,单值 |
§15.1 公共规格 + 去掉复选框(基础单选) |
| 候选池 ≤ 10 项,多值 |
§15.2 多项选择 |
| 候选池 > 10 项 / 不可枚举 |
§15.3 多项带搜索 |
| 候选池有层级关系(如部门 / 区域) |
级联选择器:每级独立面板横向铺开,单级内部规格同 §15.1~15.3 |
| 允许用户新增不在候选池的项 |
在 §15.2 / §15.3 末尾启用 §15.2.4「+ 添加项」按钮 |
15.5 CSS Token 参考
:root {
/* 触发器 —— 复用 §14 搜索框 */
--select-trigger-bg: var(--search-bg); /* #0C1836 */
--select-trigger-border: var(--search-border); /* #1A2F5A */
--select-trigger-placeholder: var(--search-placeholder); /* #6E88B0 */
--select-trigger-arrow: #6E88B0;
--select-trigger-arrow-hover: #4096FF;
/* 下拉面板 —— 复用 §14.4.4 联想 */
--select-panel-bg: var(--suggest-bg); /* #122347 */
--select-panel-border: #1A2F5A;
--select-item-text: var(--suggest-item-text); /* #C5CFE0 */
--select-item-hover-bg: var(--suggest-item-hover); /* rgba(22,119,255,0.16) */
--select-item-hover-text: var(--suggest-item-hover-text); /* #FFFFFF */
--select-item-disabled: #4A6491; /* ZS-004-05 */
/* 已选 Tag */
--select-tag-bg: #1677FF; /* ZS-002-06 */
--select-tag-text: #FFFFFF;
--select-tag-close: rgba(255,255,255,0.72);
--select-tag-close-hover: #FFFFFF;
/* 复选框 */
--check-border: #6E88B0; /* ZS-004-04 */
--check-border-hover: #4096FF; /* ZS-002-05 */
--check-fill: #1677FF; /* ZS-002-06 */
--check-mark: #FFFFFF;
--check-disabled-border: #4A6491; /* ZS-004-05 */
--check-disabled-bg: rgba(22,119,255,0.04);
/* 底部「+ 添加项」 */
--select-add-border: #1677FF; /* ZS-002-06 */
--select-add-text: #4096FF; /* ZS-002-05 */
--select-add-hover-bg: rgba(22,119,255,0.16);
--select-add-hover-text: #1677FF;
--select-add-active-bg: rgba(22,119,255,0.24);
--select-add-active-text: #FFFFFF;
/* 加载 / 错误 */
--select-loading-text: #6E88B0;
--select-error-text: #FF7875; /* ZS-001-04 */
}
16. 单选与多选(Radio / Checkbox)
对应设计稿「多选框.png」。本章定义独立作为表单字段使用的单选(Radio)和多选(Checkbox)两类原子控件,包含未选 / 已选 / 未选禁用 / 已选禁用四种状态。§15.2.2「多项选择的复选项」中的复选框直接复用本章 §16.3 规格,本章是单一真源。
16.1 公共规格
| 属性 |
取值 |
| 控件尺寸 |
14px × 14px |
| 控件描边宽度 |
1px |
| 控件 → 文字间距 |
--spacing-2 (8px)(§7.1) |
| 文字字号 |
14px Regular |
| 行高 |
20px(点击命中区与文字垂直对齐) |
| 同一组横向相邻项的间距 |
--spacing-6 (24px)(§7.1) |
| 同一组纵向相邻项的间距 |
--spacing-3 (12px)(§7.1) |
整行(控件 + 文字)任意位置可点击 = 等效切换该项状态。
16.2 单选(Radio)
一组互斥选项中只能选中一个。视觉为圆形描边 + 内圆实心点。
○ 未选 ● 已选 ○ 未选禁用 ● 已选禁用
(整组降饱和)
16.2.1 外观规格
| 状态 |
外环 |
内圆 |
文字 |
| 未选 |
1px solid #4096FF (ZS-002-05) + 背景 transparent |
— |
#C5CFE0 (ZS-004-02) |
| 未选 Hover |
1px solid #1677FF (ZS-002-06) |
— |
#FFFFFF |
| 已选 |
1px solid #1677FF (ZS-002-06) |
中心实心圆 6px × 6px,#1677FF |
#FFFFFF |
| 已选 Focus |
外环外加 0 0 0 2px rgba(22,119,255,0.16) 焦点环 |
— |
#FFFFFF |
| 未选禁用 |
1px solid #4A6491 (ZS-004-05) + 背景 rgba(22,119,255,0.04) |
— |
#4A6491 |
| 已选禁用 |
1px solid #4A6491 (ZS-004-05) |
中心实心圆 6px × 6px,#4A6491 |
#4A6491 |
外环与内圆均为正圆(border-radius: 50%)。
16.2.2 与 label 组合使用
「基本使用-组合」场景:选中某 Radio 项后,下方展开关联输入字段(如 Antd 的 Form.Item 嵌入式组合)。
● 已选
lable: [ ]
lable: [ ]
| 元素 |
规格 |
| Radio → 下方第一行 label 纵向间距 |
--spacing-3 (12px)(§7.1) |
| 嵌入字段左缩进 |
与 Radio 文字左边缘对齐(即外环宽 14px + 间距 8px = 22px 左缩进) |
| 嵌入字段的 label 与 input |
沿用 §14.1 输入框规格 |
| 嵌入区分组背景 |
可选地用 #1A2F5A (ZS-004-07) 作浅色卡片底色,强化"属于该 Radio"的视觉归属 |
16.3 多选(Checkbox)
多个选项可同时选中,互不影响。视觉为方形描边 + 内填勾 ✓。
☐ 未选 ☑ 已选 ☐ 未选禁用 ☑ 已选禁用
(整组降饱和)
16.3.1 外观规格
| 状态 |
边框 / 背景 |
勾 ✓ |
文字 |
| 未选 |
1px solid #4096FF (ZS-002-05) + 背景 transparent |
— |
#C5CFE0 (ZS-004-02) |
| 未选 Hover |
1px solid #1677FF (ZS-002-06) |
— |
#FFFFFF |
| 已选 |
实心填充 #1677FF (ZS-002-06) |
#FFFFFF,描边 2px |
#FFFFFF |
| 已选 Focus |
外加 0 0 0 2px rgba(22,119,255,0.16) 焦点环 |
#FFFFFF |
#FFFFFF |
| 半选 |
实心填充 #1677FF (ZS-002-06) |
中央横线 8px × 2px,#FFFFFF |
#FFFFFF |
| 未选禁用 |
1px solid #4A6491 (ZS-004-05) + 背景 rgba(22,119,255,0.04) |
— |
#4A6491 |
| 已选禁用 |
实心填充 #4A6491 (ZS-004-05) |
#C5CFE0 或 rgba(255,255,255,0.4) |
#4A6491 |
复选框统一圆角 2px(§4.1)。
16.3.2 与 label 组合使用
与 §16.2.2 完全一致 —— Checkbox 选中后下方展开嵌入式输入字段,缩进与间距规格相同(左缩进 22px、纵向间距 12px)。
☑ 已选
lable: [ ]
lable: [ ]
16.4 状态对照表
| 状态 |
Radio 外环 |
Radio 内圆 |
Checkbox 外框 |
Checkbox 勾 |
文字 |
| 未选 |
#4096FF 描边 |
— |
#4096FF 描边 |
— |
#C5CFE0 |
| Hover |
#1677FF 描边 |
— |
#1677FF 描边 |
— |
#FFFFFF |
| 已选 |
#1677FF 描边 |
#1677FF 6px 圆 |
#1677FF 填充 |
#FFFFFF ✓ |
#FFFFFF |
| 半选(仅 Checkbox) |
— |
— |
#1677FF 填充 |
#FFFFFF 横线 |
#FFFFFF |
| Focus |
+ 0 0 0 2px rgba(22,119,255,0.16) |
— |
+ 0 0 0 2px rgba(22,119,255,0.16) |
— |
#FFFFFF |
| 未选禁用 |
#4A6491 描边 |
— |
#4A6491 描边 |
— |
#4A6491 |
| 已选禁用 |
#4A6491 描边 |
#4A6491 6px 圆 |
#4A6491 填充 |
#C5CFE0 ✓ |
#4A6491 |
16.5 与 §15.2.2 的关系
§15.2.2「多项选择面板内的复选项」直接复用本章 §16.3 的复选框外观规格,唯一差异:
- 在多项选择下拉面板里,未选状态边框是
#6E88B0 (ZS-004-04,更"灰"的占位色),而非本章 §16.3 默认的 #4096FF(更"蓝"的强调色)
- 原因:下拉面板里项数多,所有复选框同时蓝色描边会过于喧闹;独立表单字段里数量少(通常 2–4 项),用强调色更醒目
如需统一也可以全面采用本章规格 —— 二选一即可,但一个项目内部应保持一致。
16.6 CSS Token 参考
:root {
/* 公共 */
--field-size: 14px;
--field-border-w: 1px;
--field-radius: 2px; /* 仅 Checkbox 用 */
--field-text: #C5CFE0; /* ZS-004-02 */
--field-text-hover: #FFFFFF;
--field-text-disabled: #4A6491; /* ZS-004-05 */
--field-focus-ring: 0 0 0 2px rgba(22,119,255,0.16);
/* Radio */
--radio-border: #4096FF; /* ZS-002-05 */
--radio-border-hover: #1677FF; /* ZS-002-06 */
--radio-border-checked: #1677FF;
--radio-dot: #1677FF; /* 中心 6×6 实心 */
--radio-border-disabled: #4A6491; /* ZS-004-05 */
--radio-dot-disabled: #4A6491;
--radio-bg-disabled: rgba(22,119,255,0.04);
/* Checkbox */
--checkbox-border: #4096FF; /* ZS-002-05 */
--checkbox-border-hover: #1677FF; /* ZS-002-06 */
--checkbox-fill-checked: #1677FF; /* ZS-002-06 */
--checkbox-mark: #FFFFFF;
--checkbox-border-disabled: #4A6491; /* ZS-004-05 */
--checkbox-fill-disabled: #4A6491;
--checkbox-mark-disabled: #C5CFE0;
--checkbox-bg-disabled: rgba(22,119,255,0.04);
/* 组合:嵌入式 label + 输入框(§16.2.2 / §16.3.2) */
--field-group-indent: 22px; /* 14px 控件 + 8px 间距 */
--field-group-gap-y: var(--spacing-3); /* 12px */
}
17. 日期选择器(DatePicker)
对应设计稿「日期时间筛选框.png」。覆盖单日期选择与日期范围选择两种场景。面板包含左侧快捷模式(按天 / 按周 / 按月 / 自定义)、起止输入区、双月日历主体、底部确认按钮四块。配色全部从 §1.1.3 渐蓝系(ZS-002)与 §1.1.5 深蓝系(ZS-004)取,与 §14 搜索框 / §15 选择器完全对齐。
17.1 触发器(Trigger)
触发器即「2021-12-09 📅」那一行。规格与 §14.1 输入框完全一致:
| 属性 |
取值 |
来源 |
| 高度 |
32px |
§14.1 |
| 圆角 |
2px |
§4.1 |
| 水平 padding |
--spacing-3 (12px) |
§7.1 |
| 背景 |
#0C1836 (ZS-004-09) |
— |
| 边框 |
1px solid #1A2F5A (ZS-004-07) |
— |
| 默认日期文字 |
14px Regular,#C5CFE0 (ZS-004-02);占位时 "请选择日期" 用 #6E88B0 (ZS-004-04) |
— |
| 右侧 📅 图标 |
14px,#6E88B0,hover #4096FF |
ZS-002-05 |
边框状态机(默认 / hover / focus / 失效 / 错误)直接复用 §14.1.1。
范围选择触发器变体:宽度自动延展,内显示 2021-12-09 至 2022-01-09。
17.2 下拉面板(Panel)
面板为左 + 右两栏组合:
┌──────────┬───────────────────────────────────────────────────────┐
│ 按天 › │ [ 2021-12-09 ⊗ ] 至 [ 2021-12-09 ⊗ ] │
│ 按周 › ├───────────────────────────────────────────────────────┤
│ 按月 › │ « < 2021 年 12 月 > » « < 2022 年 1 月 > » │
│ 自定义 │ 日 一 二 三 四 五 六 日 一 二 三 四 五 六 │
│ │ 29 30 1 2 3 4 5 29 30 1 2 3 4 5 │
│ │ 6 7 8 ⓿ 10 11 12 6 7 8 ⓿ 10 11 12 │
│ │ 13 14 ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ │
│ │ 20 ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ │
│ │ 27 ▓▓ ▓▓ ▓▓ ▓▓ 1 2 3 4 5 6 7 8 9 │
│ │ 3 4 5 6 7 8 9 …… │
│ ├───────────────────────────────────────────────────────┤
│ │ [确定] [取消] │
└──────────┴───────────────────────────────────────────────────────┘
⓿ = 起止日(实心蓝圆) ▓▓ = 范围内(浅蓝底矩形)
17.2.1 面板容器规格
| 属性 |
取值 |
| 背景 |
#122347 (ZS-004-08) |
| 边框 |
1px solid #1A2F5A (ZS-004-07) |
| 阴影 |
0 4px 16px rgba(6, 14, 36, 0.6)(§3.1.4 三级阴影) |
| 圆角 |
2px |
| 与触发器纵向间距 |
--spacing-1 (4px) |
| 整体宽度 |
由左栏宽 80px + 右栏(双月并列)自适应得出 |
| 左右栏分隔线 |
1px solid #1A2F5A(ZS-004-07) |
| 属性 |
取值 |
| 宽度 |
80px |
| 项高度 |
36px |
| 水平 padding |
--spacing-3 (12px) |
| 字号 |
14px Regular |
右侧 › 图标(除"自定义"外) |
12px,与文字同色 |
17.3.1 项状态
| 状态 |
背景 |
文字 |
| 默认 |
transparent |
#C5CFE0 (ZS-004-02) |
| Hover |
rgba(22,119,255,0.16) |
#FFFFFF |
| 已选 |
#1677FF (ZS-002-06) |
#FFFFFF |
17.3.2 四种模式语义
| 模式 |
行为 |
| 按天 |
点击日期格 → 立即选中单日,关闭面板,触发器显示该日 |
| 按周 |
hover 任意日期格 → 整周高亮,点击 → 选中该周 |
| 按月 |
切换到月视图(日期格变成 12 个月名),点击 → 选中该月 |
| 自定义 |
默认显示双月日历,支持选中起止日做范围(详见 §17.5) |
17.4 起止日期输入区(Range Inputs)
仅在自定义模式下显示在右栏顶部:
[ 2021-12-09 ⊗ ] 至 [ 2021-12-09 ⊗ ]
| 元素 |
色值 / 规格 |
来源 |
| 输入框 |
沿用 §14.1 公共规格,宽度 132px,只读(点击日历格回填,不直接输入) |
§14.1 |
| 中间 "至" 文字 |
14px Regular,#6E88B0 (ZS-004-04),左右 padding --spacing-3 (12px) |
— |
右侧 ⊗ 清空按钮 |
14px,#6E88B0,hover #4096FF |
ZS-002-05 |
| 输入区 → 日历主体纵向间距 |
--spacing-3 (12px) + 分割线 1px solid #1A2F5A |
§6.1 |
| 整行右内 padding |
--spacing-4 (16px) |
§7.1 |
未选起 / 止时对应输入框留空显示占位 "开始日期" / "结束日期"(#6E88B0)。
17.5 双月日历主体(Calendar Grid)
并列展示当月与下月两张日历,便于跨月选范围。
17.5.1 标题栏
« < 2021 年 12 月 > »
| 元素 |
色值 / 规格 |
| 年月文字 |
14px Medium,#C5CFE0 (ZS-004-02) |
翻页箭头 ‹ › |
14px,#6E88B0,hover #4096FF |
翻年箭头 « » |
14px,#6E88B0,hover #4096FF |
| 标题栏高度 |
36px |
| 双月之间间距 |
--spacing-6 (24px)(§7.1) |
行为:« » 翻年;‹ › 翻月。左日历翻动时右日历同步前移一月,保持"双月连续"。
17.5.2 星期表头
| 属性 |
取值 |
| 文字 |
日 一 二 三 四 五 六 |
| 字号 |
12px Regular |
| 颜色 |
#6E88B0 (ZS-004-04) |
| 行高 |
28px |
17.5.3 日期格规格
| 属性 |
取值 |
| 单元尺寸 |
28px × 28px(点击命中区) |
| 数字字号 |
14px Regular |
| 圆角 |
50%(已选时实心圆) |
| 行间距 |
0(紧凑排列) |
17.5.4 日期格状态
| 状态 |
背景 |
文字 |
| 当月普通 |
transparent |
#C5CFE0 (ZS-004-02) |
| 上下月填充(如 12 月日历里显示的 11/29、11/30、1/1、1/2) |
transparent |
#4A6491 (ZS-004-05) |
| 今天(无边框样式) |
transparent + 1px solid #1677FF |
#C5CFE0 |
| Hover |
rgba(22,119,255,0.16) |
#FFFFFF |
| 已选起止日 |
实心圆 #1677FF (ZS-002-06) |
#FFFFFF |
| 范围内(起止之间) |
rgba(22,119,255,0.16) 矩形(无圆角,左右相连成连续色带) |
#FFFFFF |
| 范围内 + 端点 |
矩形底色 + 端点实心圆叠加(视觉上"圆形扣"在色带头尾) |
#FFFFFF |
| 禁用(超出 min/max) |
transparent |
#4A6491,鼠标 not-allowed |
⚠️ 范围色带的实现要点:范围内日期格不能各自圆角,否则中间会出现空隙。推荐方案:每行整体作为容器,范围内的日期用同色底向左右各延伸 4px 模拟连续;端点处再叠加 28×28 实心圆。
17.6 底部「确定 / 取消」按钮
| 元素 |
规格 |
来源 |
| 区域高度 |
48px |
|
| 顶部分割线 |
1px solid #1A2F5A (ZS-004-07) |
§6.1 |
| 右内 padding |
--spacing-4 (16px) |
§7.1 |
| 按钮对齐 |
右对齐 |
|
| 「确定」 |
沿用 §5.2.1 主按钮(实心 #1677FF),尺寸"小号"28px |
§5.2.1 |
| 「取消」 |
沿用 §5.2.2 默认按钮(描边 + 透明底),尺寸"小号"28px |
§5.2.2 |
| 两按钮间距 |
--spacing-2 (8px) |
§7.1 |
行为:
- 「确定」 → 提交当前选择,关闭面板,触发器显示选中值
- 「取消」 → 丢弃临时选择,关闭面板,触发器值不变
按 Esc 等价于「取消」;按 Enter 等价于「确定」(当选择合法时)。
17.7 选用决策与变体
| 场景 |
选择 |
| 单日期 |
触发器 + 单月日历(无左侧快捷栏,无起止输入区) |
| 日期范围(常见筛选) |
完整组合:左侧快捷栏 + 双月日历 + 起止输入区 |
| 仅按周 / 按月 / 按季度 |
左侧只保留对应模式项;右侧日历切换为相应粒度 |
| 带时间(小时 / 分) |
在 §17.4 起止输入区下方追加时分选择列(24h 滚轮,未在本节展开) |
| 多日期独立选(非连续) |
不推荐用本组件 —— 改用 §15 多项选择 + 日期值列表 |
17.8 CSS Token 参考
:root {
/* 触发器 —— 复用 §14 搜索框 */
--date-trigger-bg: var(--search-bg); /* #0C1836 */
--date-trigger-border: var(--search-border); /* #1A2F5A */
--date-trigger-text: var(--search-text); /* #C5CFE0 */
--date-trigger-placeholder: var(--search-placeholder); /* #6E88B0 */
--date-trigger-icon: #6E88B0;
--date-trigger-icon-hover: #4096FF; /* ZS-002-05 */
/* 面板 —— 复用 §14.4.4 联想 */
--date-panel-bg: var(--suggest-bg); /* #122347 */
--date-panel-border: #1A2F5A;
--date-panel-divider: #1A2F5A; /* 左右栏 + 顶/底分割线 */
/* 左侧快捷栏 */
--date-sidebar-w: 80px;
--date-sidebar-item-h: 36px;
--date-sidebar-text: #C5CFE0; /* ZS-004-02 */
--date-sidebar-text-hover: #FFFFFF;
--date-sidebar-bg-hover: rgba(22,119,255,0.16);
--date-sidebar-bg-active: #1677FF; /* ZS-002-06 */
--date-sidebar-text-active: #FFFFFF;
/* 起止输入区 */
--date-range-sep: #6E88B0; /* "至" 文字 */
--date-range-clear: #6E88B0;
--date-range-clear-hover: #4096FF;
/* 日历单元 */
--date-cell-size: 28px;
--date-cell-text: #C5CFE0; /* 当月 */
--date-cell-text-outside: #4A6491; /* 上下月填充, ZS-004-05 */
--date-cell-text-disabled: #4A6491;
--date-cell-bg-hover: rgba(22,119,255,0.16);
--date-cell-text-hover: #FFFFFF;
--date-cell-bg-selected: #1677FF; /* 起止实心圆 */
--date-cell-text-selected: #FFFFFF;
--date-cell-bg-in-range: rgba(22,119,255,0.16); /* 范围色带 */
--date-cell-border-today: #1677FF; /* 今天 1px 边框 */
/* 标题栏 */
--date-title-text: #C5CFE0;
--date-title-arrow: #6E88B0;
--date-title-arrow-hover: #4096FF;
--date-weekday-text: #6E88B0; /* 日一二…六 */
/* 底部按钮区 */
--date-footer-h: 48px;
--date-footer-divider: #1A2F5A;
}
18. 穿梭框(Transfer)
对应设计稿「5.18 输入-穿梭框」。用于在「源列表 / 目标列表」两栏之间搬移条目,中间用 ‹ › 方向按钮转移选中项。覆盖基础用法与可搜索两种变体;左栏可为树形(带层级 + 复选框),右栏为已选平铺列表。配色全部从 §1.1.3 渐蓝系(ZS-002)与 §1.1.5 深蓝系(ZS-004)取,与 §14 搜索框 / §15 选择器 / §16 复选框完全对齐。
18.1 整体结构
┌─ 列表(0/13) ──────┐ ┌─ 已选(6/49) ──────┐
│ ▸ ☐ XXXX公司 │ │ ☐ 李宏洋 │
│ ▸ ☐ 总裁办 │ ┌──┐ │ ☐ 舒敌 │
│ ▸ ☐ 人事部 │ │ ‹ │ │ ☑ 宴青 │
│ ▸ ☐ 技术部 │ ├──┤ │ ☐ 陈平 │
│ ☐ 张小刚 │ │ › │ │ ☐ 张小凡 │
│ ☐ 李小红 │ └──┘ │ ☐ 李小红 │
└───────────────────┘ └───────────────────┘
源栏(可树形) 方向按钮组 目标栏(已选平铺)
- 左 = 源列表(待选),右 = 目标列表(已选);中间两颗上下排列的方向按钮
‹(移回源)/ ›(移入目标)。
- 两栏顶部各有一条标题栏,显示名称 + 计数
(已选/总数),如 列表(0/13)、已选(6/49)。
- 源栏支持树形结构(部门层级 + 叶子节点),目标栏为平铺列表。
18.2 外层容器与栏规格
| 属性 |
取值 |
来源 |
| 外层分栏框背景 |
#0C1836 (ZS-004-09) |
§3.1.1 |
| 外层分栏框圆角 |
4px |
§4.1 |
| 外层内边距 |
--spacing-5 (24px) |
§7.1 |
| 单栏宽度 |
≥ 240px,两栏等宽 |
— |
| 单栏背景 |
#122347 (ZS-004-08) |
§3.1.2 卡片 |
| 单栏边框 |
1px solid #1A2F5A (ZS-004-07) |
— |
| 单栏圆角 |
4px |
§4.1 |
| 栏体最小高度 |
360px(不足时撑满,超出滚动) |
— |
| 两栏与方向按钮组间距 |
--spacing-3 (12px) |
§7.1 |
标题栏是实心主色蓝横条,承载栏名 + 计数。
| 元素 |
色值 / 规格 |
来源 |
| 背景 |
#1677FF (ZS-002-06) |
§1.1.6 主色 |
| 高度 |
40px |
— |
| 水平 padding |
--spacing-4 (16px) |
§7.1 |
| 标题文字(如「列表」「已选」) |
14px Medium,#FFFFFF |
— |
计数文字 (0/13) |
14px Regular,rgba(255,255,255,0.85) |
— |
| 圆角 |
上方两角 4px,与栏体顶部贴合 |
§4.1 |
18.4 栏内条目
18.4.1 平铺列表项(目标栏 / 源栏叶子)
每行 = 复选框 + 文字,整行可点击切换勾选。复选框规格复用 §16.3。
| 状态 |
背景 |
复选框 |
文字 |
| 默认 |
transparent |
未选:1px solid #6E88B0 (ZS-004-04) |
#C5CFE0 (ZS-004-02) |
| Hover |
rgba(22,119,255,0.08) |
hover 边框 #4096FF (ZS-002-05) |
#FFFFFF |
| 已选 |
transparent |
实心填充 #1677FF (ZS-002-06) + 白勾 ✓ |
#FFFFFF |
| 禁用 |
transparent |
1px solid #4A6491 (ZS-004-05) + 背景 rgba(22,119,255,0.04) |
#4A6491 |
| 属性 |
取值 |
| 行高 |
36px |
| 水平 padding |
--spacing-3 (12px) |
| 复选框 → 文字间距 |
--spacing-2 (8px) |
| 项之间分隔 |
无分割线(靠 hover 背景区分) |
18.4.2 树形节点(源栏)
源栏按部门层级缩进,父节点带展开箭头 ▸ / ▾。
| 元素 |
色值 / 规格 |
来源 |
展开箭头 ▸ / ▾ |
12px,#6E88B0 (ZS-004-04),hover #4096FF |
ZS-002-05 |
| 每级缩进 |
--spacing-4 (16px) |
§7.1 |
| 父节点复选框 |
支持半选(部分子项选中),中央 8px × 2px 白色横线,填充 #1677FF |
§16.3 半选 |
| 箭头 → 复选框间距 |
--spacing-1 (4px) |
— |
| 节点文字 |
同 §18.4.1 平铺列表项配色 |
— |
勾选父节点 = 勾选其全部子孙;子项部分选中时父节点显示半选态(同 §15.2.3 全选逻辑)。
18.5 中间方向按钮组
两颗上下排列的小尺寸图标按钮,控制条目在两栏间转移。
| 元素 |
色值 / 规格 |
来源 |
| 按钮尺寸 |
28px × 28px(小号) |
§5.1 |
| 圆角 |
2px |
§4.1 |
| 两按钮纵向间距 |
--spacing-2 (8px) |
§7.1 |
图标 ‹ › |
14px,#FFFFFF |
— |
| 可用态背景 |
#1677FF (ZS-002-06) |
§5.2.1 主按钮 |
| 可用态 Hover |
#0958D9 (ZS-002-07) |
— |
| 可用态 Active |
#003EB3 (ZS-002-08) |
— |
| 禁用态背景 |
rgba(22,119,255,0.35),图标 #6E88B0 (ZS-004-04) |
§5.2.1 失效 |
行为:
›:把源栏选中项移入目标栏;源栏无选中时按钮禁用。
‹:把目标栏选中项移回源栏;目标栏无选中时按钮禁用。
- 转移后两栏标题计数
(已选/总数) 同步刷新。
18.6 可搜索变体
在两栏标题栏下方各嵌入一行搜索框,输入时实时过滤本栏条目;树形栏过滤后保留命中项的祖先路径。
| 属性 |
取值 |
来源 |
| 搜索框规格 |
沿用 §14.1 公共规格小号(高 28px) |
§14.1 |
| 占位符 |
"请输入",#6E88B0 (ZS-004-04) |
— |
| 右侧 🔍 图标 |
14px,#6E88B0,hover #4096FF |
ZS-002-05 |
| 搜索框背景 |
#0C1836 (ZS-004-09,比栏体深一档) |
— |
| 搜索框水平外边距 |
--spacing-3 (12px)(与栏体左右留白对齐) |
— |
| 搜索框 → 列表纵向间距 |
--spacing-2 (8px) |
§7.1 |
18.7 选用决策
| 场景 |
选择 |
| 候选项 ≤ 20、无层级 |
§18.1 基础用法(两栏平铺) |
| 候选项有部门 / 分类层级 |
源栏启用 §18.4.2 树形节点 |
| 候选项较多 / 需快速定位 |
§18.6 可搜索变体 |
| 仅单选搬移、候选少 |
不必用穿梭框,改用 §15 选择器 |
18.8 CSS Token 参考
:root {
/* 外层与栏 */
--transfer-frame-bg: #0C1836; /* ZS-004-09 外层分栏 */
--transfer-col-bg: #122347; /* ZS-004-08 单栏 */
--transfer-col-border: #1A2F5A; /* ZS-004-07 */
--transfer-col-radius: 4px;
/* 标题栏 */
--transfer-header-bg: #1677FF; /* ZS-002-06 */
--transfer-header-text: #FFFFFF;
--transfer-header-count: rgba(255,255,255,0.85);
--transfer-header-h: 40px;
/* 条目 */
--transfer-item-h: 36px;
--transfer-item-text: #C5CFE0; /* ZS-004-02 */
--transfer-item-text-on: #FFFFFF;
--transfer-item-hover-bg: rgba(22,119,255,0.08);
--transfer-item-disabled: #4A6491; /* ZS-004-05 */
--transfer-tree-indent: 16px;
--transfer-tree-arrow: #6E88B0; /* ZS-004-04 */
--transfer-tree-arrow-hover: #4096FF; /* ZS-002-05 */
/* 复选框(复用 §16.3) */
--transfer-check-border: #6E88B0; /* ZS-004-04 */
--transfer-check-fill: #1677FF; /* ZS-002-06 */
--transfer-check-mark: #FFFFFF;
/* 方向按钮 */
--transfer-btn-size: 28px;
--transfer-btn-bg: #1677FF; /* ZS-002-06 */
--transfer-btn-hover: #0958D9; /* ZS-002-07 */
--transfer-btn-active: #003EB3; /* ZS-002-08 */
--transfer-btn-disabled: rgba(22,119,255,0.35);
--transfer-btn-icon: #FFFFFF;
--transfer-btn-icon-disabled: #6E88B0;
/* 搜索框(复用 §14.1 小号) */
--transfer-search-h: 28px;
--transfer-search-bg: #0C1836; /* ZS-004-09 */
--transfer-search-border: #1A2F5A; /* ZS-004-07 */
}
19. 树选择(TreeSelect)
对应设计稿「5.19 输入-树选择」。触发器即一个「请选择 ▾」控件,下拉展开一棵可折叠树,叶子 / 节点可被选中。按值数分单选 / 多选,按是否带过滤分无搜索 / 有搜索,共 4 种组合。触发器规格复用 §15.1.1 选择器触发器;面板规格复用 §15.1.2 下拉面板;多选 Tag、复选框分别复用 §15.2.1、§16.3。配色全部从 §1.1.3 渐蓝系(ZS-002)与 §1.1.5 深蓝系(ZS-004)取。
19.1 触发器(Trigger)
| 变体 |
触发器内容 |
来源 |
| 单选 |
单行文字(已选节点名,如 PC终端);占位 "请选择" |
§15.1.1 |
| 多选 |
渲染已选 Tag 列表(n1 × n1 ×),超宽折叠成 +N × |
§15.2.1 |
| 属性 |
取值 |
来源 |
| 高度 |
32px |
§14.1 |
| 圆角 |
2px |
§4.1 |
| 背景 |
#0C1836 (ZS-004-09) |
— |
| 边框 |
1px solid #1A2F5A(默认);状态机复用 §14.1.1 |
ZS-004-07 |
| 右侧箭头 |
收起 ▾ / 展开 ▴,12px,#6E88B0,hover #4096FF |
ZS-002-05 |
19.2 下拉面板(Panel)
| 属性 |
取值 |
来源 |
| 背景 |
#122347 (ZS-004-08) |
§15.1.2 |
| 边框 |
1px solid #1A2F5A (ZS-004-07) |
— |
| 阴影 |
0 4px 16px rgba(6, 14, 36, 0.6)(§3.1.4 三级阴影) |
— |
| 圆角 |
2px |
— |
| 内边距 |
上下 --spacing-2 (8px) |
§7.1 |
| 与触发器纵向间距 |
--spacing-1 (4px) |
— |
| 面板宽度 |
与触发器等宽(最小 220px) |
— |
19.3 树节点(公共)
[-] 全部终端
└ [-] 本级中心
└ [-] PC终端
├ ─ 研发管理部
├ [-] 产品线
│ ├ ▓ 开发小组 ← 选中(整行高亮)
│ └ ─ 测试小组
└ ─ 未分组用户终端
└ [+] 下级中心 ← 折叠(含未展开子树)
19.3.1 节点规格
| 元素 |
色值 / 规格 |
来源 |
| 节点行高 |
32px |
— |
| 每级缩进 |
--spacing-4 (16px) |
§7.1 |
| 展开 / 折叠图标 |
方形 [-] / [+](含子树时显示),12px,描边 1px solid #6E88B0,符号 #6E88B0 |
ZS-004-04 |
| 图标 Hover |
描边 + 符号 #4096FF (ZS-002-05) |
— |
| 叶子前缀 |
短横 ─(占位对齐),#4A6491 (ZS-004-05) |
— |
| 图标 → 文字间距 |
--spacing-2 (8px) |
— |
| 文字 |
14px Regular |
— |
19.3.2 节点状态配色
| 状态 |
行背景 |
文字 |
来源 |
| 默认 |
transparent |
#C5CFE0 (ZS-004-02) |
— |
| Hover |
rgba(22,119,255,0.08) |
#FFFFFF |
— |
| 选中(单选 / 命中叶子) |
整行实心高亮 #1677FF (ZS-002-06) |
#FFFFFF |
§1.1.6 主色 |
| 父级(含选中子项,未自身选中) |
transparent |
#FFFFFF |
— |
| 禁用 |
transparent |
#4A6491 (ZS-004-05) |
— |
单选选中态用整行通栏蓝底(不是仅文字变色),与下拉联想项的局部 hover 区分;点击节点空白处 = 选中该节点(父节点亦可选)。
19.4 单选变体
| 维度 |
规则 |
| 选中表现 |
点击节点 → 整行 #1677FF 高亮,回填触发器文字,关闭面板 |
| 同时可选数 |
1(再选其它节点替换原值) |
| 触发器 |
单行文字 |
| 节点前缀 |
无复选框,仅展开图标 + 叶子短横 |
19.5 多选变体
| 维度 |
规则 |
| 节点前缀 |
展开图标后增加复选框(规格复用 §16.3) |
| 选中表现 |
勾选复选框;命中行可叠加 #1677FF 整行高亮强调当前焦点 |
| 父子联动 |
勾父节点 → 勾全部子孙;子项部分选中 → 父节点半选(中央白横线) |
| 触发器 |
渲染已选 Tag(n1 ×),溢出折叠 +N ×(§15.2.1) |
| 关闭时机 |
多选不关闭面板,点触发器外部或箭头收起 |
| 复选框状态 |
外观 |
来源 |
| 未选 |
1px solid #6E88B0 (ZS-004-04) + 透明底 |
§16.5(面板内用灰描边) |
| 已选 |
实心 #1677FF (ZS-002-06) + 白勾 ✓ |
§16.3 |
| 半选 |
实心 #1677FF + 中央 8px × 2px 白横线 |
§16.3 |
| 禁用 |
1px solid #4A6491 (ZS-004-05) + 背景 rgba(22,119,255,0.04) |
— |
19.6 有搜索变体
面板顶部嵌入一行搜索框,输入时实时过滤树节点,保留命中节点的祖先链并自动展开。
| 属性 |
取值 |
来源 |
| 搜索框规格 |
沿用 §14.1 公共规格小号(高 28px) |
§14.1 |
| 占位符 |
"搜索",#6E88B0 (ZS-004-04) |
— |
| 右侧 🔍 图标 |
14px,#6E88B0,hover #4096FF |
ZS-002-05 |
| 搜索框背景 |
#0C1836 (ZS-004-09) |
— |
| 搜索框 → 树主体间距 |
--spacing-2 (8px) + 分割线 1px solid #1A2F5A |
§6.1 |
| 命中文字高亮(可选) |
关键字片段 #4096FF (ZS-002-05) |
— |
19.7 交互与动画
| 行为 |
动效 |
来源 |
| 面板展开 |
scaleY(0.95) → 1,opacity 0 → 1,200ms ease-out |
§8.5 |
| 节点展开 / 折叠 |
子树高度 0 → auto,[+]/[-] 切换,200ms ease-out |
— |
| 触发器箭头 |
▾ → ▴ 旋转 180deg,200ms ease-out |
— |
| Hover 背景过渡 |
120ms ease-out |
§8.5 |
19.8 选用决策
| 场景 |
选择 |
| 层级数据、选单个节点 |
§19.4 单选 |
| 层级数据、选多个节点(含父子联动) |
§19.5 多选 |
| 树节点多 / 需快速定位 |
叠加 §19.6 有搜索 |
| 需要在两栏之间搬移而非单纯选取 |
改用 §18 穿梭框 |
| 无层级的平铺多选 |
改用 §15.2 多项选择 |
19.9 CSS Token 参考
:root {
/* 触发器(复用 §15.1.1 / §14.1) */
--tree-trigger-bg: #0C1836; /* ZS-004-09 */
--tree-trigger-border: #1A2F5A; /* ZS-004-07 */
--tree-trigger-text: #C5CFE0; /* ZS-004-02 */
--tree-trigger-arrow: #6E88B0; /* ZS-004-04 */
--tree-trigger-arrow-hover: #4096FF; /* ZS-002-05 */
/* 面板(复用 §15.1.2) */
--tree-panel-bg: #122347; /* ZS-004-08 */
--tree-panel-border: #1A2F5A; /* ZS-004-07 */
/* 节点 */
--tree-node-h: 32px;
--tree-indent: 16px;
--tree-node-text: #C5CFE0; /* ZS-004-02 */
--tree-node-text-on: #FFFFFF;
--tree-node-hover-bg: rgba(22,119,255,0.08);
--tree-node-selected-bg: #1677FF; /* ZS-002-06 整行高亮 */
--tree-node-disabled: #4A6491; /* ZS-004-05 */
--tree-toggle-border: #6E88B0; /* [+]/[-] 描边 */
--tree-toggle-hover: #4096FF; /* ZS-002-05 */
--tree-leaf-dash: #4A6491; /* 叶子短横 */
/* 多选复选框(复用 §16) */
--tree-check-border: #6E88B0; /* ZS-004-04 面板内灰描边 */
--tree-check-fill: #1677FF; /* ZS-002-06 */
--tree-check-mark: #FFFFFF;
/* 多选 Tag(复用 §15.2.1) */
--tree-tag-bg: #1677FF; /* ZS-002-06 */
--tree-tag-text: #FFFFFF;
--tree-tag-close: rgba(255,255,255,0.72);
/* 搜索框(复用 §14.1 小号) */
--tree-search-h: 28px;
--tree-search-bg: #0C1836; /* ZS-004-09 */
--tree-search-border: #1A2F5A; /* ZS-004-07 */
}
20. 上传(Upload)
对应设计稿「5.20 输入-上传(上)」。覆盖三种形态:上传组件(label + 触发按钮 + 文件名回填框)、批量上传(拖拽区 + 文件表格 + 底部操作)、批量上传中(带状态列的文件列表)。按钮复用 §5.2,输入框复用 §14.1,表格分割线复用 §6,状态色取 §1.1.2 渐红系(错误)与 §1.1.4 渐青系(成功)。其余配色从渐蓝系(ZS-002)与深蓝系(ZS-004)取。
20.1 上传组件(单文件 · 表单内)
表单字段形态:左 label + 触发按钮 + 说明 + 文件名回填框。
label [ ⬆ 上传文件 ]
支持 DOCX/ZIP/PDF 格式,文件大小不超过 2 MB。
下载示例文件
label [ 未选择文件 ] [ 选择文件 ]
20.1.1 元素规格
| 元素 |
色值 / 规格 |
来源 |
label 文字 |
14px Regular,#6E88B0 (ZS-004-04) |
§12.2.2 |
| 「⬆ 上传文件」按钮 |
沿用 §5.2.2 默认按钮(描边 #6E88B0 + 透明底 + #C5CFE0 文字),前缀上传图标同文字色 |
§5.3.2 |
| 帮助说明文字 |
14px Regular,#4096FF (ZS-002-05) |
§1.1.6 |
| 「下载示例文件」链接 |
14px Regular,#4096FF,hover #1677FF + 下划线 |
§5.2.3 文本按钮 |
| 文件名回填框 |
沿用 §14.1 输入框(高 32px,只读),占位 "未选择文件" #6E88B0 |
§14.1 |
| 「选择文件」按钮 |
沿用 §5.2.1 主按钮(实心 #1677FF + 白字) |
§5.2.1 |
| 回填框 → 按钮间距 |
--spacing-2 (8px) |
§7.1 |
| 行与行纵向间距 |
--spacing-3 (12px) |
§7.1 |
20.2 批量上传(拖拽区 + 文件表格)
[ ⬆ 上传文件 ] 支持批量上传,上传格式为txt文件
┌───────────────────────────────────────────────┐
│ 文件名 大小 状态 操作 │ ← 表头
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ │
│ 释放鼠标 │ ← 空态 / 拖拽提示
│ │
└───────────────────────────────────────────────┘
[ 取消 ] [ 开始上传 ]
20.2.1 触发区
| 元素 |
色值 / 规格 |
来源 |
| 「⬆ 上传文件」按钮 |
沿用 §5.2.1 主按钮(实心 #1677FF),前缀上传图标白色 |
§5.3.2 |
| 右侧格式说明 |
14px Regular,#6E88B0 (ZS-004-04) |
— |
| 按钮 → 说明间距 |
--spacing-3 (12px) |
§7.1 |
20.2.2 拖拽区 / 文件表格容器
| 属性 |
取值 |
来源 |
| 容器背景 |
#0C1836 (ZS-004-09) |
§3.1.3(凹陷感) |
| 容器边框 |
1px dashed #1A2F5A(空闲);拖拽悬停时 1px dashed #4096FF (ZS-002-05) |
§6.1 虚线 |
| 圆角 |
4px |
§4.1 |
| 空态提示文字「释放鼠标」 |
14px Regular,#4096FF (ZS-002-05),居中 |
— |
| 容器最小高度 |
200px |
— |
20.2.3 表头
| 属性 |
取值 |
来源 |
| 列 |
文件名 / 大小 / 状态 / 操作 |
— |
| 文字 |
14px Medium,#C5CFE0 (ZS-004-02) |
— |
| 表头底分割线 |
1px dashed #4A6491 (ZS-004-05) |
§6.1 虚线 |
| 行高 |
40px |
— |
| 水平 padding |
--spacing-4 (16px) |
§7.1 |
20.2.4 底部操作
| 元素 |
规格 |
来源 |
| 「取消」 |
沿用 §5.2.2 默认按钮 |
§5.2.2 |
| 「开始上传」 |
沿用 §5.2.1 主按钮 |
§5.2.1 |
| 按钮排列 |
默认按钮在左、主按钮在右 |
§5.3.4 |
| 按钮间距 |
--spacing-2 (8px) |
§7.1 |
| 操作区与表格间距 |
--spacing-4 (16px),右对齐 |
§7.1 |
20.3 批量上传中(带状态列)
文件入列后逐行显示上传状态,状态色按结果区分。
┌───────────────────────────────────────────────────────┐
│ 文件名 大小 状态 操作 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 文件名.txt ✓ 上传成功 删除 │
│ 文件名是六个字…txt 40K ⊘ 文件格式有误 删除 │
│ 文件名.txt 40K ◌ 上传40%… 删除 │
│ 文件名.txt 40K ◌ 上传40%… 删除 │
│ 文件名.txt 40K ◷ 待上传 删除 │
└───────────────────────────────────────────────────────┘
[ 取消 ] [ 开始上传 ]
20.3.1 数据行规格
| 属性 |
取值 |
来源 |
| 行高 |
40px |
— |
| 行间分割线 |
1px dashed #2D4473 (ZS-004-06,弱化) |
§6.1 |
| 文件名文字 |
14px Regular,#C5CFE0 (ZS-004-02),过长 … 省略中部 |
— |
| 大小文字(数字) |
14px Regular(D-DIN / Arial),#6E88B0 (ZS-004-04) |
§2.1.2 |
| 「删除」操作 |
沿用 §5.2.3 文本按钮,默认 #4096FF,hover #1677FF + 下划线 |
§5.2.3 |
20.3.2 状态列配色
| 状态 |
图标 |
图标 / 文字色 |
来源 |
| 上传成功 |
✓(实心圆勾) |
#13C2C2 (ZS-003-06,渐青/成功) |
§1.1.4 |
| 文件格式有误 / 失败 |
⊘(实心圆叹号) |
#F5222D (ZS-001-06,渐红/错误) |
§1.1.2 |
| 上传中(带百分比) |
◌(旋转环) |
#1677FF (ZS-002-06),环旋转 1.2s linear infinite |
§5.4.2 加载 |
| 待上传(排队) |
◷(时钟) |
#4096FF (ZS-002-05) |
§1.1.6 |
| 属性 |
取值 |
| 状态图标尺寸 |
16px |
| 图标 → 文字间距 |
--spacing-2 (8px) |
| 状态文字字号 |
14px Regular |
| 进度文字("上传40%…") |
与所在状态图标同色 |
进度可叠加细进度条:行底 2px 高,已传段 #1677FF (ZS-002-06),未传段 #1A2F5A (ZS-004-07),宽度按百分比。
20.4 状态流转
| 流转 |
触发 |
| 待上传 → 上传中 |
点击「开始上传」,按队列依次启动 |
| 上传中 → 上传成功 |
服务端返回 2xx,图标切 ✓,行可保留或淡出 |
| 上传中 → 失败 |
网络 / 服务端错误,图标切 ⊘,文字 #F5222D,可点「删除」或重试 |
| 校验即失败 |
入列时格式 / 大小不符,直接标「文件格式有误」,不进入上传 |
| 任意态 → 移除 |
点「删除」从列表移除(上传中则中断请求) |
20.5 选用决策
| 场景 |
选择 |
| 表单内单文件(头像 / 附件) |
§20.1 上传组件 |
| 多文件批量、需拖拽 |
§20.2 批量上传 |
| 多文件需逐条看进度 / 结果 |
§20.3 批量上传中 |
| 仅展示已传文件、不再上传 |
用只读文件列表,去掉状态列与底部操作 |
20.6 CSS Token 参考
:root {
/* 触发按钮(复用 §5.2) */
--upload-btn-primary-bg: #1677FF; /* ZS-002-06 主按钮 */
--upload-btn-outline-border: #6E88B0; /* ZS-004-04 默认按钮 */
--upload-btn-outline-text: #C5CFE0; /* ZS-004-02 */
/* 说明 / 链接 */
--upload-help-text: #4096FF; /* ZS-002-05 */
--upload-tip-text: #6E88B0; /* ZS-004-04 */
--upload-link: #4096FF; /* ZS-002-05 */
--upload-link-hover: #1677FF; /* ZS-002-06 */
/* 文件名回填框(复用 §14.1) */
--upload-input-bg: #0C1836; /* ZS-004-09 */
--upload-input-border: #1A2F5A; /* ZS-004-07 */
--upload-input-placeholder:#6E88B0; /* ZS-004-04 */
/* 拖拽区 / 表格容器 */
--upload-drop-bg: #0C1836; /* ZS-004-09 */
--upload-drop-border: #1A2F5A; /* ZS-004-07 虚线 */
--upload-drop-border-active:#4096FF; /* ZS-002-05 拖拽悬停 */
--upload-drop-hint: #4096FF; /* "释放鼠标" */
/* 表格 */
--upload-th-text: #C5CFE0; /* ZS-004-02 */
--upload-th-divider: #4A6491; /* ZS-004-05 表头虚线 */
--upload-row-divider: #2D4473; /* ZS-004-06 行间虚线 */
--upload-filename-text: #C5CFE0; /* ZS-004-02 */
--upload-size-text: #6E88B0; /* ZS-004-04 */
--upload-action-text: #4096FF; /* ZS-002-05 删除 */
/* 状态列 */
--upload-status-success: #13C2C2; /* ZS-003-06 成功 */
--upload-status-error: #F5222D; /* ZS-001-06 失败 */
--upload-status-loading: #1677FF; /* ZS-002-06 上传中 */
--upload-status-pending: #4096FF; /* ZS-002-05 待上传 */
/* 进度条 */
--upload-progress-done: #1677FF; /* ZS-002-06 */
--upload-progress-track: #1A2F5A; /* ZS-004-07 */
}
21. 弹出式窗口(Modal / Dialog)
对应设计稿「弹出式窗口」。居中模态弹窗,承载多步表单 / 编辑流程。结构 = 遮罩 + 标题栏(含关闭)+ 可选 Tabs + 可选步骤条 + 表单主体 + 底部操作。Tabs 复用 §9.1.1、步骤条复用 §10.2、各表单控件复用 §14~17;本节额外定义弹窗容器、表单项布局,以及截图中出现但前文未覆盖的几个表单原子(分段按钮组 / 密码框 / 文本域 / 数字+单位 / 错误态)。配色从 §1.1.2 渐红系(错误)、§1.1.3 渐蓝系(ZS-002)、§1.1.5 深蓝系(ZS-004)取。
21.1 遮罩与容器
| 属性 |
取值 |
来源 |
| 遮罩背景 |
rgba(6, 14, 36, 0.6)(基于 ZS-004-10) |
§3.1.4 |
| 遮罩动画 |
opacity 0 → 1,200ms ease-out |
— |
| 容器背景 |
linear-gradient(180deg, #122347 0%, #0C1836 100%)(ZS-004-08 → ZS-004-09) |
§8.2.1 |
| 容器边框 |
1px solid #1A2F5A (ZS-004-07) |
— |
| 容器圆角 |
4px(§4.1 Modal/Drawer) |
§4.1 |
| 容器阴影 |
0 8px 32px rgba(6, 14, 36, 0.6)(§3.1.4 三级阴影) |
§3.1.4 |
| 容器内边距 |
--spacing-6 (32px) |
§7.1 |
| 弹出动画 |
scale(0.96) → 1 + opacity 0 → 1,200ms ease-out |
— |
| 宽度档位 |
小 480px / 中 640px / 大 800px(按内容选) |
— |
21.2 标题栏
| 元素 |
色值 / 规格 |
来源 |
| 标题文字 |
20px Bold,#FFFFFF,水平居中 |
§2.1.2 |
| 标题下分隔线 |
linear-gradient(90deg, transparent 0%, #1677FF 50%, transparent 100%),1px 高 |
§8.2.4 |
关闭按钮 × |
16px,#6E88B0 (ZS-004-04),hover #4096FF (ZS-002-05) |
§5.2.4 |
| 关闭按钮位置 |
右上角,距容器上 / 右内边距对齐 |
— |
| 标题栏 → 主体间距 |
--spacing-5 (24px) |
§7.1 |
21.3 内嵌 Tabs 与步骤条
| 组件 |
复用 |
备注 |
顶部 Tabs(Tab1选中 / Tab2默认) |
§9.1.1 横向页签 |
激活 #4096FF + 2px 下划线,下方通栏基线 1px solid #1A2F5A |
步骤条(第一步 ✓ / 第二步 ② / 第三步 ③) |
§10.2 弹窗步骤条 |
完成态描边圆 + 蓝勾,当前态实心 #1677FF + 白字,未开始描边 #4A6491;连接线 1px dashed |
| Tabs → 步骤条间距 |
--spacing-5 (24px) |
— |
| 步骤条 → 表单间距 |
--spacing-5 (24px) |
— |
21.4 表单项布局
弹窗内表单采用左 label + 右控件横向布局。
| 元素 |
规格 |
来源 |
| label 文字 |
14px Regular,#C5CFE0 (ZS-004-02),右对齐 |
— |
| label 列宽 |
固定(如 96px),右侧留 --spacing-3 (12px) 到控件 |
§7.1 |
必填星号 * |
#F5222D (ZS-001-06),置于 label 前 |
§1.1.2 |
| 表单项纵向间距 |
--spacing-4 (16px) |
§7.1 |
| 控件默认宽度 |
撑满 label 右侧剩余区 |
— |
| label 与控件垂直对齐 |
控件首行基线居中 |
— |
21.4.1 错误态与校验信息
| 元素 |
色值 / 规格 |
来源 |
| 错误边框 |
1px solid #F5222D + 外发光 0 0 0 2px rgba(245,34,45,0.16) |
§14.1.1 错误 |
| 错误提示文字(如「输入表单内容报错」) |
12px Regular,#F5222D (ZS-001-06) |
§1.1.2 |
| 提示文字位置 |
控件正下方,左对齐于控件 |
— |
| 控件 → 提示文字间距 |
--spacing-1 (4px) |
§7.1 |
21.5 表单控件补充
截图中出现、前文未单列的控件原子:
21.5.1 分段按钮组(Segmented,如「一级风险 / 二级风险」)
并排互斥按钮,选中态高亮。
| 状态 |
背景 |
边框 |
文字 |
| 未选 |
transparent |
1px solid #6E88B0 (ZS-004-04) |
#C5CFE0 (ZS-004-02) |
| 选中 |
rgba(22,119,255,0.16) |
1px solid #1677FF (ZS-002-06) |
#4096FF (ZS-002-05) |
| Hover(未选) |
rgba(22,119,255,0.08) |
#4096FF |
#4096FF |
| 禁用 |
transparent |
#4A6491 (ZS-004-05) |
#4A6491 |
- 高度
32px,圆角 2px(§4.1),内边距 0 14px
- 相邻项间距
--spacing-2 (8px)(独立按钮形态);若做无缝连体段则共用一条 1px #1A2F5A 分隔
21.5.2 密码输入框(可见性切换)
| 元素 |
色值 / 规格 |
来源 |
| 输入框 |
沿用 §14.1 公共规格 |
§14.1 |
| 掩码字符 |
● / *,#C5CFE0 |
— |
右侧眼睛图标 👁 / 👁🗨 |
16px,#6E88B0,hover #4096FF |
ZS-002-05 |
| 切换行为 |
点击图标在「明文 / 掩码」间切换 |
— |
21.5.3 禁用输入框(「未填-禁用」)
| 属性 |
取值 |
来源 |
| 边框 |
1px solid #2D4473 (ZS-004-06) |
§14.1.1 失效 |
| 背景 |
rgba(22,119,255,0.04) |
— |
| 占位 / 文字 |
#4A6491 (ZS-004-05) |
— |
| 光标 |
not-allowed |
— |
21.5.4 文本域(Textarea)
| 属性 |
取值 |
来源 |
| 边框 / 背景 / 状态机 |
同 §14.1 输入框 |
§14.1 |
| 最小高度 |
96px(约 4 行) |
— |
| 内边距 |
--spacing-3 (12px) |
§7.1 |
| 占位文字 |
"请输入",#6E88B0 |
— |
| 圆角 |
2px |
§4.1 |
| 右下角缩放手柄 |
可选,#4A6491 |
— |
21.5.5 数字 + 单位输入(「100 天」)
输入框右侧无缝拼一个实心主色蓝单位块。
| 元素 |
色值 / 规格 |
来源 |
| 数字输入区 |
沿用 §14.1,右边框去除(与单位块拼接) |
§14.1 |
| 单位块背景 |
#1677FF (ZS-002-06) |
§14.3 后台搜索框按钮 |
| 单位块文字 |
14px Regular,#FFFFFF |
— |
| 单位块内边距 |
0 --spacing-3(12px) |
— |
| 整体高度 |
32px,右侧两角圆角 2px |
§4.1 |
21.5.6 行内日期 / 范围 / 下拉 / 复选
| 控件 |
复用 |
| 「威胁类型 请选择 ▾」 |
§15.1 选择器触发器 |
| 「首发时间」日期时间 |
§17.1 日期触发器(错误态见 §21.4.1) |
| 「周期 … 至 …」范围 |
§17.1 范围触发器变体 |
| 「该账户仅允许…」复选框 |
§16.3 多选 |
21.6 底部操作
| 元素 |
规格 |
来源 |
| 区域顶部间距 |
--spacing-5 (24px)(与主体留白) |
§7.1 |
| 按钮对齐 |
右对齐(也可整体居中,跟随设计稿——本稿居中) |
§5.3.4 |
| 「取消」 |
沿用 §5.2.2 默认按钮 |
§5.2.2 |
| 「保存」/「确定」 |
沿用 §5.2.1 主按钮 |
§5.2.1 |
| 排列顺序 |
默认按钮在左、主按钮在右 |
§5.3.4 |
| 按钮间距 |
--spacing-2 (8px) |
§7.1 |
21.7 交互
| 行为 |
规则 |
| 打开 |
遮罩淡入 + 容器 scale(0.96)→1,焦点落到首个可输入控件 |
| 关闭 |
点 × / 「取消」 / 遮罩外 / Esc;有未保存改动时可二次确认 |
| 提交 |
「保存」前做校验,失败项标 §21.4.1 错误态并滚动到首个错误 |
| 焦点陷阱 |
Tab 循环限制在弹窗内(不泄漏到背景页面) |
21.8 CSS Token 参考
:root {
/* 遮罩与容器 */
--modal-mask: rgba(6,14,36,0.6); /* ZS-004-10 */
--modal-bg-top: #122347; /* ZS-004-08 */
--modal-bg-bottom: #0C1836; /* ZS-004-09 */
--modal-border: #1A2F5A; /* ZS-004-07 */
--modal-radius: 4px;
--modal-shadow: 0 8px 32px rgba(6,14,36,0.6);
/* 标题 */
--modal-title-text: #FFFFFF;
--modal-title-line: linear-gradient(90deg, transparent, #1677FF, transparent);
--modal-close: #6E88B0; /* ZS-004-04 */
--modal-close-hover: #4096FF; /* ZS-002-05 */
/* 表单项 */
--form-label: #C5CFE0; /* ZS-004-02 */
--form-required: #F5222D; /* ZS-001-06 */
--form-error-border: #F5222D;
--form-error-ring: 0 0 0 2px rgba(245,34,45,0.16);
--form-error-text: #F5222D;
/* 分段按钮组 */
--seg-border: #6E88B0; /* ZS-004-04 未选 */
--seg-selected-bg: rgba(22,119,255,0.16);
--seg-selected-border: #1677FF; /* ZS-002-06 */
--seg-selected-text: #4096FF; /* ZS-002-05 */
/* 数字+单位 */
--unit-addon-bg: #1677FF; /* ZS-002-06 */
--unit-addon-text: #FFFFFF;
/* 禁用输入 */
--input-disabled-border:#2D4473; /* ZS-004-06 */
--input-disabled-bg: rgba(22,119,255,0.04);
--input-disabled-text: #4A6491; /* ZS-004-05 */
}