Files
lislgosms/docs/ui-design-guidelines.md
T

8.2 KiB
Raw Blame History

CMPP 平台 UI 设计规范

设计原则

  • 后台页面优先服务扫描、比对和操作,避免营销式大留白。
  • 信息密度保持克制:列表、表格、卡片要紧凑,但标题、正文、状态之间必须保留可辨识层级。
  • 页面以白色和浅灰为主,品牌黑用于导航和关键结构,蓝色只用于选中、主操作和链接。
  • 所有业务页面优先复用 src/components/ui 内的自研组件。

颜色

  • 品牌主色:#12121A,用于侧边栏、强品牌识别区域。
  • 辅助金色:#D9C3A0,用于品牌点缀,不作为大面积背景。
  • 选中蓝色:#2563EB,用于当前菜单、主按钮、链接、聚焦态。
  • 背景色:页面背景 #F6F7F9,卡片和表单背景 #FFFFFF
  • 边框色:默认 #E5E7EB,较强分隔 #D1D5DB
  • 文本色:主文本 #1F2937,标题 #111827,辅助文本 #6B7280
  • 状态色:成功 #16A34A,警告 #D97706,失败 #DC2626,信息 #2563EB

字号与层级

  • 页面标题:24px,700。只用于页面主标题、重要弹窗标题。
  • 区块标题:16px,600。用于表单分组、卡片区块、小节标题。
  • 卡片标题:16px,600。短信模板名称、彩信模板名称、应用名称等都使用这一档,不要放大到 20px 以上。
  • 正文文本:14px,400-500,行高 1.5。用于表格正文、卡片正文、普通说明。
  • 次要文本:13px,400-500,使用辅助色。用于 ID、时间、应用名、补充说明。
  • 辅助标签:12px,500-600。用于 Tag、字段提示、状态旁注。
  • 表格正文:14px,关键字段可 600。
  • 状态 Tag:12px,600,保持短胶囊,不拉满列宽。

文字规范

  • 同一业务类型的名称必须使用同一档字号:短信模板名称、彩信模板名称、签名名称、应用名称统一用卡片标题 16px / 600
  • 页面标题和卡片标题要明显区分:页面标题可 20-24px,卡片内标题不超过 16px,避免列表卡片视觉过重。
  • ID、时间、哈希、编码等机器信息统一使用 13px、辅助色,可使用等宽字体。
  • 大段短信/彩信内容统一使用 14px、辅助色、行高 1.5-1.6;卡片内最多展示 3 行,详情弹窗再展示全文。
  • 字重优先使用 400 / 500 / 600 / 700,不使用 800 以上。
  • 不使用负字距;后台界面文字不随视口宽度缩放。
  • 中文按钮文字保持 2-6 个字为宜,动词优先,例如「预览」「编辑」「删除」「确认」。

间距

  • 页面区块间距:20-24px。
  • 工具栏和列表间距:16-20px。
  • 卡片内边距:20px。
  • 卡片内部常规间距:10-12px。
  • 卡片顶部「名称 / ID / 标题」建议节奏:
    • 名称到 ID:约 7-8px。
    • ID 到标题:约 7-8px。
    • 标题到媒体或正文:约 10-12px。
  • 正文到状态区域:约 8-12px;不要使用 margin-top: auto 把状态推到底部,除非卡片高度必须统一。

卡片

  • 圆角统一不超过 8px。
  • 列表卡片使用 1px 边框,hover 可轻微阴影和边框变色。
  • 彩信/短信模板类卡片可用左侧 5px 状态色条,但不要再叠加过多装饰。
  • 业务标签放右上角时,要为标题保留右侧 padding,避免重叠。
  • 卡片底部操作条高度建议 48-52px,背景用浅灰 #F4F6F8

表格

  • 表头使用浅灰背景,字号 13-14px,字体 600。
  • 行高常规 64-86px,复杂两行信息可增加,但避免超过 110px。
  • 操作按钮采用文字或图标加文字,危险操作使用红色。
  • 备注、原因、说明、失败信息等不可预测长度的业务文本列必须显式设置列宽:桌面端最小240px,常规建议280-360px;不得省略TableColumn.width后任由其被固定信息列挤窄。长文本使用全局.ui-table__long-text样式正常换行并允许在任意长单词处断行,完整内容仍应可通过详情查看。宽表因此超过容器时使用表格内部横向滚动,不压缩长文本列到不可读宽度。

表单和弹窗

  • 弹窗默认 md,复杂编辑器使用 xl
  • 弹窗必须采用 Header / Body / Footer 三段布局,Footer 固定完整显示。
  • 表单字段在宽弹窗中可双列;编辑器内容、上传区、长文本保持单列。
  • Footer 按钮顺序:辅助操作、取消、确认。确认按钮在最右侧。
  • 弹窗内容高度超过视口时,只滚动 Body,不滚动 Header/Footer。

状态与反馈

  • 已通过 使用成功绿。
  • 审核中 使用信息蓝。
  • 已驳回 使用危险红。
  • 待报备 / 未开通 / 未知 使用中性灰。
  • 同一行展示多个运营商状态时,使用「移动:Tag 联通:Tag 电信:Tag」的键值形式,便于横向扫描。

导航

左侧菜单

  • 左侧菜单采用白底:背景使用 #FFFFFF,右侧使用 1px #E5E7EB 分隔线,不使用深色整栏背景。
  • 菜单宽度默认使用全局变量 --sidebar-width: 248px;折叠态宽度为 84px
  • 侧边栏固定在视口内:高度 100vh,页面主内容滚动时菜单不跟随滚动。
  • 侧边栏内边距建议为上下 24px、左右 16px;菜单项之间保持紧凑,分组间距约 20px。
  • 品牌区左上固定展示,图标使用浅蓝底和蓝色图形,品牌文字使用强文本色,不再使用大面积品牌黑底。

菜单分组

  • 分组标题使用 12px、600、辅助浅灰色,字距为 0,不使用全大写或过强颜色。
  • 分组标题左右内边距与菜单项保持对齐,建议 0 12px
  • 分组标题只承担结构提示,不作为强视觉元素。

菜单项

  • 菜单项高度由 padding: 10px 12px 控制,图标和文字间距约 12px。
  • 菜单项圆角使用 8px 或 var(--radius-md),不要使用过大的胶囊形。
  • 默认文字使用主文本色,字重 500。
  • 菜单文字单行展示,超长时省略号,不换行,不撑开侧栏。
  • 图标使用线性图标,大小约 18-20px,颜色跟随文字状态。

选中与悬停

  • 当前菜单和 hover 菜单统一使用浅蓝背景 var(--color-selected-soft),文字和图标使用选中蓝 #2563EB
  • 当前菜单左侧增加 3px 蓝色内嵌竖条:box-shadow: inset 3px 0 0 var(--color-selected)
  • 选中态不使用投影,不使用大面积深蓝底,避免菜单视觉过重。
  • hover 只改变背景和文字颜色,不改变尺寸,避免菜单跳动。

菜单滚动条

  • 分组较多时,只让菜单列表区域滚动,不让整个侧边栏或页面标题区域滚动。
  • 菜单滚动条默认隐藏:scrollbar-color: transparent transparentWebKit thumb 透明。
  • 鼠标进入侧边栏时再显示滚动条,thumb 使用低透明蓝色:约 rgba(37, 99, 235, 0.18)
  • 鼠标悬停在滚动区域时可略微加深到 rgba(37, 99, 235, 0.22);拖拽/hover thumb 时可到 0.34
  • 滚动条宽度建议 6px,靠近侧栏右边界显示;通过负 margin-right 和补偿 padding-right 让滚动条贴边但不遮挡菜单文字。

复用要求

  • 客户端、运营端、系统管理类页面都应复用同一套左侧菜单规范。
  • 新增一级模块时,优先加入现有分组;只有业务域明显不同才新增分组。
  • 后续若抽离布局组件,应保留现有类名语义:.sidebar.side-nav.side-nav-section.side-nav-list

组件约定

  • 按钮:使用 Button
  • 输入框:使用 Input / Textarea
  • 下拉:使用 Select
  • 日期:使用 DateRangeInput / DateTimeInput
  • 表格:使用 Table
  • 状态:使用 Tag
  • 弹窗:使用 Modal

新增页面或改版时,先检查是否可以复用以上组件;只有现有组件无法表达业务交互时,才新增全局组件。

公共分页容量展示补充(2026-09-08 夜)

公共Pagination中的容量Select只显示“10/25/50/100 条/页”选中项,不显示“每页数量”标题;与翻页控件放在同一操作区。复用sr-only隐藏标签并以唯一id关联,保持键盘和读屏可访问;不要删除其他表单Select的可见标签。签名质量四Tab和通道报备明细沿用该组件,默认25和独立筛选状态保持。顶栏通知接口失败时须说明计数暂不可用,既有真实值只能作为上次数据保留,不能归零伪装无通知。