北京橙智合科技有限公司 · 统一设计规范

总则Foundations

橙智合的产品横跨管理系统、APP 与小程序。这套规范的目标不是让三端长得一模一样 —— 那既做不到也不该做 —— 而是让它们用同一套决策依据:同一份色彩语义、同一套间距节奏、同一组状态表达。平台差异只体现在交互形态和尺寸上。

四条设计原则

信息优先

管理系统的价值在密度和准确。装饰性元素让位给数据,能用一行说清就不要卡片。

状态可见

加载中、空、出错、无权限都必须有明确设计,不允许留白页面或原地卡住。

克制用色

橙色是强调色不是背景色。一屏之内主色出现不超过两处,否则强调等于没强调。

可回退

破坏性操作必须二次确认并给出撤销路径;表单要能保留草稿。

三端一致与差异

维度管理系统(Web)APP / 小程序
色彩语义完全一致 —— 同一份 token,主色/成功/警告/错误含义不得平台化解释
间距节奏完全一致 —— 4px 基准栅格
正文字号14px(信息密度优先)16px(阅读距离更远、无鼠标悬停)
控件高度32px 默认44px 最小触达(iOS HIG / Material 共同下限)
圆角6px 控件 / 8px 卡片8px 控件 / 12–16px 卡片
主要导航左侧栏 + 顶部面包屑底部 Tab(≤5 项)+ 顶部返回
反馈方式Message / Notification / ModalToast / ActionSheet / 半屏弹层

色彩Color

点击任意色块复制其 token 名。所有颜色只能通过 token 引用, 代码里不允许出现裸十六进制色值 —— 这是全端换肤和暗色模式能生效的前提。

品牌橙

主色取 #F05A00。之所以不用更亮的 #FF6A00:亮橙配白字对比度只有 2.87:1, 主按钮在 WCAG 下不合格;#F05A00 是 3.40:1,过了非文本对比门槛,视觉上仍是饱和活力橙。 需要更亮的橙做品牌表达(Logo、插画、渐变)时用 orange-5

中性灰

中性色带极轻微暖调(偏黄 2–3 度),和橙色主色同处一屏时不会显脏。灰阶承担 90% 的界面面积。

功能色

警告色用琥珀而非橙 —— 橙色已是主色,若警告也用橙,用户无法区分「这是主要操作」和「这里有风险」。 规范上进一步限制:警告态不使用实心按钮,只以浅底 + 深字 + 图标出现。

语义 token

业务代码只允许使用语义 token(下方这层),不允许直接引用上面的原色刻度。原色刻度是给设计系统内部换算用的。

可读性底线

组合对比度达标情况用途
可以
  • 正文、次要文字、三级文字全部 ≥ 4.5:1,任意一档都能安全承载正文
  • 主按钮白字 3.40:1,满足 WCAG 1.4.11 非文本对比;按钮文字固定 500 字重
  • 禁用态允许低对比 —— 低对比本身就是「不可用」的信号
不可以
  • 用纯色橙 orange-6 做大面积背景再叠白字正文
  • 只用颜色表达状态 —— 色觉障碍用户看不出来,必须同时有图标或文案
  • 为了「好看」自行调低文字灰度,占位符最浅只到 text-tertiary

图表配色

8 色循环,已按相邻色相拉开距离;超过 8 个系列请改用分组或明度渐变,不要继续加色。

文字Typography

中文优先的字体栈,不引入 Web Font —— 中文字体包动辄数 MB,管理系统首屏收益为负。 字重只用 400 / 500 / 600:PingFang SC 没有 700,强行加粗会触发浏览器合成假粗体,中文笔画会糊。

-apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "Helvetica Neue", Arial, sans-serif

管理系统排版级别

移动端排版级别

移动端字号用 px 而非 rpx:rpx 会随屏宽等比放大,大屏手机上中文会膨胀到失衡。布局尺寸才用 rpx。

数字

所有表格、金额、统计数字必须开等宽数字 font-variant-numeric: tabular-nums, 否则数值刷新时列宽会跳动。规范里已在 .czh-table.czh-num 默认开启。

未开启(比例数字)
¥ 1,111,111
¥ 8,888,888
已开启(等宽数字)✓
¥ 1,111,111
¥ 8,888,888

间距与布局Spacing & Layout

4px 基准栅格。所有内外边距、组件间隙都必须落在这个刻度上,不允许出现 7px、15px 这类自由值。

使用约定

场景取值说明
图标与文字4 / 8行内元素间的呼吸
表单项之间20label + 控件 + 提示为一组,组间 20
卡片内边距20 / 24Web 20,移动端 16(屏幕更窄)
卡片之间16同级模块的标准间隙
页面区块之间24 / 32语义上不相关的两块内容
页面左右边距24(Web)/ 16(移动)移动端两侧留 16 是国内主流手感

断点

管理系统按 1280 设计,向下适配到 1024;低于 1024 折叠侧边栏。移动端按 375 设计(750 设计稿)。

圆角 · 阴影 · 动效Shape, Elevation & Motion

圆角

Web 端克制(控件 6px / 卡片 8px),移动端放大(控件 8px / 卡片 12–16px)—— 触摸界面圆角更大看起来更「可按」。

阴影

阴影只用来表达层级,不用来装饰。同一层级的元素阴影必须一致;平铺在页面上的卡片一律用边框而非阴影。

动效

动效服务于「让用户看清发生了什么」。超过 320ms 的过渡在管理系统里都是负担。已全局适配 prefers-reduced-motion

Token时长用途
duration-instant80ms颜色变化、悬停反馈
duration-fast120ms按钮、输入框状态切换
duration-base200ms下拉展开、Tooltip、开关
duration-slow320ms弹窗、抽屉、页面转场
duration-slower480ms移动端全屏转场,Web 端禁用

缓动

easing-standard
cubic-bezier(.2,0,0,1) · 默认,进出都用
easing-enter
元素入场,快起慢停
easing-exit
元素退场,慢起快走
easing-spring
仅移动端强反馈,Web 端不用

图标Iconography

线性风格,24×24 网格绘制,描边 1.6px,端点与拐角圆头。不混用面性与线性图标。 同一屏内图标只使用一个尺寸档位;图标必须与文字基线对齐,不允许居中偏移。


icon-xs 12
icon-sm 14
icon-md 16 默认
icon-lg 20
icon-xl 24 移动端
可以
  • 用 SVG Sprite / iconfont symbol 引用,颜色继承 currentColor
  • 纯图标按钮必须有 aria-label 和 Tooltip
  • 移动端图标热区补足到 44×44,视觉尺寸仍是 24
不可以
  • 用 PNG 图标 —— 无法跟随主题变色,高倍屏发虚
  • 同一功能在 Web 和 APP 用不同图标
  • 把品牌橙用在普通功能图标上,那是强调色

按钮Button

一屏之内只允许一个主按钮。如果你觉得需要两个,说明这一屏承担了两件事,应该拆开。

类型 —— 主要 / 次要 / 虚线 / 文字 / 链接
尺寸 —— 小 28 / 默认 32 / 大 40
状态 —— 悬停 / 按下 / 加载 / 禁用
危险操作 —— 破坏性动作必须走危险态,且需二次确认
可以
  • 按钮文案用动词短语:「保存草稿」「导出 Excel」
  • 并排按钮主次分明,主按钮在右(Web)/ 在下(移动端)
  • 异步操作按钮进入 loading 并禁用,防止重复提交
不可以
  • 用「确定 / 取消」这种无信息量的文案承载重要操作
  • 一行摆三个以上按钮 —— 收进「更多」下拉
  • 禁用按钮不给原因,用户不知道要做什么才能解锁

表单与输入Form & Input

标签一律置顶左对齐 —— 左侧对齐标签在中文长度不一时会造成参差,且响应式下必须重排。 校验在失焦时触发,不在输入过程中打断用户。

输入控件
与营业执照一致,用于开票
手机号需为 11 位数字
系统自动生成,不可修改
选择控件
可以
  • 必填项打星号,选填项也标注「选填」 —— 只标必填时用户仍要逐个数
  • 错误提示说清怎么改:「手机号需为 11 位数字」
  • 长表单分步或分组,每组不超过 7 个字段
不可以
  • 提示语只写「格式错误」「输入有误」
  • 提交失败后清空已填内容
  • 用占位符代替 label —— 一开始输入用户就忘了这是什么字段

反馈与状态Feedback & Status

四种状态必须全部设计到位:加载中、空、出错、无权限。缺任何一种,都会在真实数据下暴露成白屏。

全局提示 Alert
本月账单将于 3 月 1 日生成
生成后不可修改,请提前核对明细。
数据已同步,共更新 128 条记录。
有 3 张发票即将过期,请在 7 天内处理。
同步失败:上游接口超时
已自动重试 3 次。可稍后手动重试,或联系管理员检查网关配置。
状态标识 —— 颜色之外必须有文字,不能只靠色块
已完成 同步中 待审核 已失败 已归档

默认 重点客户 已付款 待补件 已逾期 试用中 VIP 12 99+
加载 / 进度 / 骨架屏
上传中 62%
已完成

列表和详情页首屏用骨架屏,不用转圈 —— 骨架屏让用户提前看到结构,感知等待更短。 转圈只用于按钮内、局部刷新等 <1s 的场景。

空状态 —— 必须给下一步动作,不能只说「暂无数据」
还没有客户记录
新建客户后,合同、账单会自动关联到这里
确认弹窗 —— 破坏性操作的标准形态
确认删除「华东区 2026 年度合同」?
该合同下的 24 条账单记录将一并归档,操作后 30 天内可在回收站恢复。

标题直接说清删的是什么(带对象名),正文说清后果和可否恢复,按钮文案复述动作而不是「确定」。

数据展示Data Display

统计卡 —— 数值等宽,涨跌用颜色 + 符号双重编码
本月新增客户
1,284
↑ 12.4% 环比
回款金额
¥ 8,642,300
↓ 3.1% 环比
待处理工单
37
— 持平
表格 —— 金额右对齐、表头不换行、操作列放最右
合同编号客户状态金额操作
CZH-2026-0815华东制造集团已完成¥ 1,280,000
CZH-2026-0816南方零售连锁审批中¥ 96,400
CZH-2026-0817北方物流有限公司已逾期¥ 452,000
共 128 条
导航构件
首页/ 合同管理/ 合同详情
提交申请
2部门审批
3财务复核
4归档

管理系统Admin Console

布局固定:左侧栏 200–240px + 顶栏 56px + 内容区。内容区最大宽度不设限但表格列需可横向滚动。 面包屑放在内容区顶部而非顶栏 —— 顶栏归属全局,面包屑归属当前页。

橙智合运营中台
概览
工作台
数据分析
业务
客户管理
合同管理
系统
设置
首页/工作台

工作台

今日新增
86
待办事项
12
本月回款
¥ 864 万
最近合同
编号客户状态金额
0815华东制造集团已完成¥ 1,280,000
0816南方零售连锁审批中¥ 96,400

关键约定

顶栏高度56px,内容左右 24px,不放业务操作
侧边栏展开 200px / 收起 56px;三级以上层级改用页内 Tab,不做三级菜单
页面标题H3 20px,与操作按钮同排,按钮靠右
表格行高48px(12px 上下内边距 + 22px 行高);紧凑模式 40px
筛选区置于表格上方独立卡片,超过 4 个条件折叠为「更多筛选」
批量操作选中行后在表格上方浮出操作条,显示已选数量与「取消选择」
权限缺失隐藏而非禁用 —— 用户看不到自己无权使用的功能,减少困惑

APP / 小程序Mobile

按 375pt 设计(750 设计稿,1px = 2rpx)。最小触达区域 44×44pt,这是 iOS HIG 与 Material 的共同下限, 也是国内小程序审核的隐性红线。底部必须留出 safe-area-inset-bottom

9:41●●● ▮
合同详情
合同金额
¥ 1,280,000
已完成
编号CZH-2026-0815
客户华东制造集团
签订日期2026-08-15
负责人张明 ›
剩余 3 张发票待上传
首页
合同
消息
我的
9:41●●● ▮
新建客户
* 客户名称
* 联系电话 手机号需为 11 位数字
接收短信通知
还没有上传附件
支持 JPG / PDF,单个不超过 10MB

关键约定

导航栏44pt 高(不含状态栏),标题居中,返回键靠左;小程序需为胶囊按钮预留右侧 ~87pt
底部 Tab≤ 5 项,49pt + 安全区;图标 24pt + 文字 10pt
主按钮44pt 高,通栏,圆角 8px;表单页固定在底部而不随内容滚动
列表行最小 48pt;可点击行右侧带 ,不可点击的不带
输入框字号16px —— 小于 16px 时 iOS Safari 会自动缩放页面
反馈轻提示用 Toast(1.5–2s,居中偏上);需要决策用半屏 ActionSheet,不用 Alert 堆逻辑
分割线.czh-hairline-b(transform 缩放实现 0.5px),直接写 1rpx 在高倍屏会偏粗
下拉刷新列表页标配;加载更多用自动触底,不放「点击加载更多」按钮

接入方式Adoption

所有平台的主题文件都由 tokens/czh.tokens.json 生成。改色只改这一个 JSON, 跑 node tokens/build.mjs,四端同时更新。构建时会自动校验对比度,不达标直接失败。

Vue 3 + Element Plus

// main.ts —— 顺序不能变,橙智合主题必须在 element 之后
import 'element-plus/dist/index.css';
import 'element-plus/theme-chalk/dark/css-vars.css';   // 需要暗色时
import '@czh/design/dist/web/czh-tokens.css';
import '@czh/design/dist/element-plus/czh-element.css';

React + Ant Design v5

import { ConfigProvider } from 'antd';
import zhCN from 'antd/locale/zh_CN';
import { czhLightTheme, czhDarkTheme } from '@czh/design/dist/antd/czhTheme';

<ConfigProvider locale={zhCN} theme={isDark ? czhDarkTheme : czhLightTheme}>
  <App />
</ConfigProvider>

小程序 / uni-app / Taro

/* app.wxss */
@import '/styles/czh-tokens.wxss';

/* 页面里只用变量,不写死色值 */
.card {
  background: var(--czh-bg-container);
  border-radius: var(--czh-radius-xl);
  padding: var(--czh-spacing-4);
}

Flutter

MaterialApp(
  theme: CzhTheme.light(),
  darkTheme: CzhTheme.dark(),
  themeMode: ThemeMode.system,
);

// 组件内取色
final c = CzhColors.of(context);
Container(color: c.bgContainer, padding: EdgeInsets.all(CzhSpacing.s4));

React Native

import { useCzhTheme } from '@czh/design/dist/react-native/czhTheme';

const t = useCzhTheme();  // 自动跟随系统亮/暗
<View style={{ backgroundColor: t.color['bg-container'], padding: t.spacing[4] }} />

规范治理Governance

设计规范失效从来不是因为写得不好,而是因为没人维护、没人检查。下面是让它活下去的最小机制。

改动流程

改动类型谁能改流程
新增语义 token设计负责人改 JSON → 构建 → 提 MR,说明用途和已有 token 为何不够用
调整已有色值设计负责人 + 前端负责人必须跑通对比度校验;影响面在 MR 里列出受影响的产品
新增组件规范任何人提议至少两个产品有相同需求才纳入,避免为单一场景污染规范
平台特例该端负责人写进各端「关键约定」表,不改公共 token

落地检查清单

每个产品在提测前自查,任何一条不过就不算完成:

目录结构

橙智合/
├── tokens/czh.tokens.json   ← 唯一事实源,改色只改这里
├── tokens/build.mjs         ← 生成全部平台产物 + 对比度校验
├── dist/                    ← 生成物,禁止手改
│   ├── web/ element-plus/ antd/ miniprogram/ flutter/ react-native/
│   └── tokens.resolved.json ← 供 Figma Variables 导入
├── styles/czh-components.css← 组件参考实现(手写,只消费变量)
├── site/index.html          ← 本页面,由模板 + token 内联生成
└── docs/                    ← 分主题规范文档
橙智合设计规范 v1.0 · 北京橙智合科技有限公司 · 本页由 tokens/czh.tokens.json 驱动生成
已复制