Skip to content

Mall 电商系统 · 统一设计系统

版本:v3.0(色值落地 + 暗色模式 + 组件状态矩阵 + 错误边界 + 响应式细则) 适用范围:前台商城(Portal)+ 后台管理(Admin) 本文档是所有页面设计的底层约束,任何页面设计必须遵循本规范。 CSS 实现文件:shadcn-variables.css(Token 定义)、design-system.css(全局规范工具类)


1. 设计原则

#原则释义落地要求
P1目标导向每个页面只服务一个核心任务页面设计先回答"用户来这里做什么决策",再谈布局
P2效率优先减少点击数、减少思考成本高频操作 ≤3 步可达;默认值覆盖 80% 场景
P3信息分层重要信息先看到,次要信息按需展开首屏只放决策必需信息;详情用折叠/抽屉/次级页
P4状态可见任何操作都有即时、明确的状态反馈加载/成功/失败/空态四态必备,禁止"无响应"交互
P5防错与可逆危险操作需确认,操作可撤销删除/批量操作二次确认;提供"撤销"或"恢复"路径
P6一致性前后台同一套语言体系同一概念全站统一命名;同类页面统一布局骨架
P7移动优先(前台)前台以移动端体验为基准设计前台先保证 375px 可用,再向桌面增强
P8桌面高效(后台)后台以桌面端高密度操作为基准后台信息密度可高于前台,但单行操作不超过 5 个

2. 用户与终端

2.1 前台商城(Portal)

  • 目标用户:C 端消费者(18-45 岁,有网购习惯)
  • 终端策略:移动优先的响应式 H5
    • 基准视口:375px(iPhone SE)
    • 内容最大宽度:1200px(桌面居中展示)
    • 断点:<768px 单列移动布局 / 768-1199px 平板 / ≥1200px 桌面
  • 使用场景:碎片化浏览(通勤/睡前)、目的性购买(搜索直达)、比价决策

2.2 后台管理(Admin)

  • 目标用户:商家运营人员(运营/客服/仓管/财务/超管)
  • 终端策略:桌面优先 Web 应用
    • 最小支持宽度:1280px
    • 推荐视口:1440px+
  • 使用场景:长时间高频操作、批量处理、数据核对

3. 布局规范

3.1 前台布局骨架

┌─────────────────────────────────────┐
│  顶部栏 TopBar(吸顶)               │  64px:Logo + 搜索 + 购物车 + 用户
├─────────────────────────────────────┤
│                                     │
│         内容区 Content               │  最大宽度 1200px 居中
│         (页面主体,可滚动)          │  移动端全宽,左右留白 16px
│                                     │
├─────────────────────────────────────┤
│  底部导航 TabBar(移动端吸底)        │  56px:首页/分类/购物车/我的
│  页脚 Footer(桌面端展示)            │  链接矩阵 + 备案信息
└─────────────────────────────────────┘

规则:

  • TopBar 全站吸顶,滚动不消失
  • 移动端展示底部 TabBar(首页/分类/购物车/我的 4 项),桌面端隐藏 TabBar 展示 Footer
  • 交易流程页(结算/支付)隐藏 TabBar,避免跳出
  • 内容区背景色 --background,卡片背景色 --card

3.2 后台布局骨架

┌──────────┬──────────────────────────────────────┐
│          │  顶栏 Header(56px)                   │ 面包屑 + 用户信息
│  侧边栏   ├──────────────────────────────────────┤
│ Sidebar  │  标签页 TagsView(40px,可关闭)        │
│ (210px)  ├──────────────────────────────────────┤
│          │                                      │
│  可折叠   │        内容区 Content                 │ 内边距 24px
│  →64px   │        (页面主体,独立滚动)           │ 最大宽度 1600px
│          │                                      │
└──────────┴──────────────────────────────────────┘

规则:

  • 侧边栏深色底,两级菜单(一级模块 + 二级页面)
  • TagsView 支持多标签页切换与关闭,保留浏览上下文
  • 内容区独立滚动,侧边栏与顶栏固定
  • 列表页内容区最大宽度 1600px,超宽屏居中

3.3 栅格与间距

场景栅格间距基数
前台商品流移动 2 列 / 平板 3 列 / 桌面 4-5 列12px(移动)/ 16px(桌面)
前台内容区单列流式,卡片间距 16px16px
后台表单24 栅格,标签对齐方式:右对齐表单项间距 22px
后台卡片卡片间距 16px,卡片内边距 20px8 的倍数

全局间距刻度:4 / 8 / 12 / 16 / 20 / 24 / 32 / 48(只允许使用这些值)


4. 色彩与视觉 Token

4.1 语义色板(前后台统一)

Token用途HSL 值HEX 值使用约束
--primary品牌主色、主按钮、关键链接、选中态221 83% 53%#2563EB一个视图内主按钮 ≤1 个
--primary-hover主色悬停态221 83% 45%#1D4ED8按钮/链接 hover
--primary-active主色按下态221 83% 38%#1E40AF按钮 active
--success成功状态、正向数据(上架/已完成/上涨)142 76% 36%#16A34A仅状态表达,不做装饰
--warning警告状态、待办事项(待处理/待发货)38 92% 50%#F59E0B配合文字说明,不单独用色
--destructive危险操作(删除)、负向数据(下跌/失败)0 84% 60%#EF4444删除按钮必须用此色
--destructive-hover危险色悬停态0 84% 50%#DC2626删除按钮 hover
--foreground主文字色222 84% 5%#0F172A标题、正文、表格
--muted-foreground次要文字、辅助说明215 16% 47%#64748B正文以外的描述性文字
--border分割线、卡片边框、输入框边框214 32% 91%#E2E8F01px 实线
--input输入框边框色(同 border)214 32% 91%#E2E8F0focus 时切换为 --ring
--ring焦点环色(同 primary)221 83% 53%#2563EB2px 描边,无障碍焦点
--background页面底色0 0% 100%#FFFFFF内容区背景
--card卡片/面板底色0 0% 100%#FFFFFF浮于 background 之上
--muted骨架屏/禁用背景210 40% 96%#F1F5F9不可交互区域底色
--accent表格选中行/悬停行背景210 40% 96%#F1F5F9列表行选中态

4.2 字体层级

层级字号字重用途
H124px600后台页面标题
H220px600前台楼层标题 / 后台卡片标题
H316px600卡片内小标题 / 商品名
Body14px400正文、表格内容
Caption12px400辅助说明、时间戳、标签
Price16-24px700价格专用,前台价格用品牌色

4.3 圆角与阴影

  • 圆角统一 --radius: 8px;按钮 8px、卡片 8px、输入框 8px、标签 4px、头像圆形
  • 阴影三级:
    • shadow-card:卡片默认(轻)
    • shadow-hover:卡片悬停(中)
    • shadow-dialog:弹窗/下拉(重)

4.4 暗色模式 Token 映射

暗色模式通过 .dark 类激活,所有 Token 自动映射,无需业务代码额外处理。

Token亮色 HEX暗色 HEX映射策略
--background#FFFFFF#0F172A页面底色反转为深色
--foreground#0F172A#F8FAFC主文字反转为浅色
--card#FFFFFF#1E293B卡片比背景浅一档,保持层级
--primary#2563EB#3B82F6主色提亮,保证对比度 ≥4.5:1
--success#16A34A#22C55E语义色提亮
--warning#F59E0B#FBBF24语义色提亮
--destructive#EF4444#F87171语义色提亮
--border#E2E8F0#334155边框加深,保持可见性
--muted#F1F5F9#1E293B骨架屏/禁用背景
--muted-foreground#64748B#94A3B8次要文字提亮
--sidebar-background#0F172A#020617侧边栏更深一档

暗色模式规则

  • 暗色模式下阴影加深 1 级(shadow-cardshadow-hover 强度)
  • 图片/图标在暗色下降低亮度 10%(filter: brightness(0.9)
  • 当前版本后台支持暗色切换,前台默认亮色(后续版本开放)

4.5 响应式断点细则

前台(移动优先)

断点视口宽度布局策略商品列数间距基数
xs<375px单列,全宽2 列12px
sm375-767px单列,全宽2 列12px
md768-1199px双栏/三栏3 列16px
lg≥1200px内容居中 1200px4-5 列16px

后台(桌面优先)

断点视口宽度布局策略侧边栏表格列
sm<1280px不推荐,提示升级折叠为 64px隐藏次要列(排序值/创建时间)
md1280-1439px标准布局可折叠 210/64px全列展示,操作列固定
lg1440-1919px推荐视口210px 展开全列 + 内容区最大 1600px 居中
xl≥1920px宽屏优化210px 展开内容区最大 1600px 居中,两侧留白

后台响应式规则

  • 侧边栏折叠阈值:视口 <1440px 时默认折叠,用户可手动展开
  • 表格操作列始终固定在右侧,不随水平滚动消失
  • 面包屑在窄屏下自动省略中间层级(如“商品 / 商品列表”省略为“商品列表”)

5. 组件使用规范

5.1 按钮

类型场景约束
主按钮 Primary页面唯一核心动作(提交订单/保存)同一视图 ≤1 个
次按钮 Default常规操作(查询/重置/编辑)不限数量
文字按钮 Text表格行内操作、弱操作行内操作 ≤5 个,超出收进"更多"
危险按钮 Danger删除、作废必须配合二次确认

尺寸:后台默认 32px;前台主操作按钮 44px(移动端触控标准);行内按钮 24-28px。

5.2 表格(后台专用)

  • 必备列:序号/标识列 + 业务列 + 状态列 + 操作列
  • 状态列必须用标签 Tag 表达,禁止纯文字
  • 操作列固定在右侧,按钮用文字按钮
  • 分页固定在表格底部右侧,展示"共 N 条"
  • 列宽:时间列 160px、状态列 100px、操作列按按钮数 120-180px
  • 长文本列必须 show-overflow-tooltip

5.3 表单

  • 标签位置:后台右对齐(宽度统一 100px);前台顶对齐(移动端友好)
  • 必填项标红星 *,置于标签前
  • 校验时机:失焦校验单字段,提交校验全表单
  • 错误提示:字段下方红字,不用弹窗报错
  • 一个表单只允许一个主提交按钮

5.4 弹窗 vs 抽屉 vs 新页面

信息量载体场景举例
轻量(≤5 个字段)对话框 Dialog修改排序、处理举报
中量(6-15 个字段)抽屉 Drawer编辑优惠券、退货详情
重量(>15 字段或多步骤)独立页面添加商品、订单详情

规则:弹窗/抽屉内禁止再弹弹窗;删除确认统一用 MessageBox.confirm

5.5 标签 Tag 状态色约定(全站统一)

状态语义颜色举例
进行中/待处理warning 橙待付款、待发货、待审核、未处理
成功/完成success 绿已完成、已上架、已处理、已发货
失败/关闭danger 红已取消、已下架、审核拒绝
中性/无效info 灰草稿、已过期、已忽略
强调/特殊primary 蓝默认项、推荐中

5.6 搜索与筛选(后台列表页标准结构)

[筛选卡片] 输入框/下拉 + [查询] [重置]
[工具栏]   左侧:新增按钮  右侧:批量操作
[表格]
[分页]
  • 筛选条件 ≤6 个直接平铺;>6 个收起为"展开更多"
  • 查询不自动触发,必须点“查询”(避免频繁请求)
  • 重置 = 清空筛选 + 回到第 1 页 + 重新查询

5.7 组件状态矩阵

每个可交互组件必须覆盖以下 6 种视觉状态,禁止遗漏。

5.7.1 输入框(Input / Textarea)

状态边框色背景色文字色附加表现
Default--border--card--foreground占位符用 --muted-foreground
Hover--muted-foreground--card--foreground边框色加深
Focus--ring--card--foreground2px 焦点环,光标闪烁
Disabled--border--muted--muted-foreground禁止点击,cursor: not-allowed
Error--destructive--card--foreground下方红字错误提示
Readonly--border--muted--foreground可选中不可编辑

5.7.2 下拉选择(Select)

状态表现
Default同 Input Default
Hover同 Input Hover
Focus同 Input Focus + 下拉面板展开
Disabled同 Input Disabled + 箭头置灰
Error同 Input Error
已选中显示选中值,未选中时显示占位符“请选择”

5.7.3 开关(Switch)

状态表现
填充 --primary,圆点右侧
填充 --border,圆点左侧
Hover填充色加深 10%
Disabled透明度 0.5,禁止点击
Loading圆点内显示微型 spinner

5.7.4 按钮(Button)补充交互态

状态表现
Default背景 --primary,文字 --primary-foreground
Hover背景 --primary-hover
Active背景 --primary-active,轻微缩放 0.98
Focus2px --ring 描边,offset 2px
Disabled透明度 0.5,cursor: not-allowed
Loading文字前显示 spinner,禁止点击

5.7.5 表格行(Table Row)

状态背景色说明
Default--card默认白底
Hover--accent鼠标悬停行高亮
Selected--accent + 左侧 2px --primary 色条复选框勾选
Disabled--muted不可操作行置灰
Striped--muted (50% 透明度)斑马纹,可选开启

6. 交互与反馈规范

6.1 加载状态

场景表现
页面首屏加载骨架屏 Skeleton(前台)/ 表格 loading(后台)
局部刷新区域 loading 遮罩
按钮提交按钮进入 loading 态并禁用,防重复提交
下拉加载更多底部 loading 提示(前台列表)

6.2 操作反馈

操作结果反馈方式时长
轻量成功(收藏/加购)顶部轻提示 Message2s 自动消失
重要成功(下单/支付)结果页(独立页面)常驻
失败错误提示,说明原因 + 建议动作3s
危险操作确认弹窗,说明后果手动关闭

6.3 空状态(四态必备)

每个数据区域必须设计四种状态:

状态文案范式举例
空数据说明 + 引导动作"购物车还是空的,去逛逛 →"
加载中骨架屏/转圈
加载失败说明 + 重试按钮"网络开小差了,点击重试"
无搜索结果说明 + 建议"没有找到相关商品,换个关键词试试"

6.4 页面跳转

  • 前台:商品详情从列表进入保留返回位置(滚动位置记忆)
  • 后台:详情类页面用 TagsView 新标签打开,列表页保持不销毁
  • 登录拦截:需登录页面未登录时跳转登录,登录后回跳原页面

6.5 全局错误边界

所有未捕获异常必须友好降级,禁止白屏。

错误类型HTTP 状态页面表现操作引导
403 无权限403插画 + “你没有访问该页面的权限”[返回首页] [联系管理员]
404 页面不存在404插画 + “你访问的页面不存在”[返回首页] [返回上一页]
500 服务器错误500插画 + “服务器开小差了”[点击重试] [返回首页]
网络断开顶部红色横幅“网络连接已断开”自动检测恢复后自动重连
Token 过期401轻提示“登录已过期” + 跳转登录登录后回跳原页面
接口超时10s 超时提示 + 重试按钮“请求超时,请检查网络后重试”

错误边界规则

  • 前台:错误页复用统一插画组件,保持品牌一致性
  • 后台:错误页展示当前用户角色信息,引导联系超管
  • 网络状态:顶部监听 navigator.onLine,断网时全局横幅常驻
  • API 层:Axios 拦截器统一处理 401/403/500,业务代码无需重复处理

7. 文案规范

7.1 通用文案

场景标准文案禁用
删除确认"确定删除该{对象}吗?删除后不可恢复""你确定吗?"
提交成功"{对象}成功"(保存成功/提交成功)"OK"
加载中"加载中..."空白
空购物车"购物车还是空的" + "去逛逛""暂无数据"
未登录"登录后查看更多" + "去登录""请先登录!"

7.2 文案原则

  • 用"你"不用"您"(前台亲和);后台用中性陈述句
  • 按钮文案用动宾结构:「新增商品」「批量发货」,不用「点击这里」
  • 错误文案必须包含原因 + 建议:"库存不足,请减少购买数量"
  • 金额统一保留 2 位小数,千分位分隔:¥1,299.00
  • 时间统一 yyyy-MM-dd HH:mm:ss(后台)/ 友好格式(前台:今天/昨天/x分钟前)

8. 前后台一致性映射表

同一业务概念在前后台的命名必须一致:

业务概念前台叫法后台叫法状态枚举(统一)
订单状态待付款/待发货/待收货/已完成/已取消同左0待付/1待发/2待收/3完成/4取消
商品状态在售/已下架上架/下架1上架/0下架
售后状态待审核/待退货/待收货/已完成/已拒绝同左0-4
优惠券状态未使用/已使用/已过期未领取/已领取/已过期按业务定义
举报状态未处理/已处理0/1

9. 无障碍规范(Accessibility)

大厂硬性门槛。目标:WCAG 2.1 AA 级。

9.1 色彩对比度

元素最低对比度说明
正文文字4.5:1对背景色
大号文字(≥18px 加粗 / ≥24px)3:1标题、价格
图形/UI 组件边界3:1输入框边框、图表线条
禁用态不作强制但必须可辨识为"不可用"

9.2 不能只靠颜色传达信息

  • 状态必须「色彩 + 文字/图标」双通道:如订单状态用 Tag 文字而非色块
  • 表单错误:红字 + 错误图标 + 文字说明,不能只标红
  • 图表:系列用颜色区分时,同时用不同形状符号(圆点/菱形)

9.3 键盘与焦点

  • 所有可交互元素可用 Tab 顺序到达,焦点顺序符合视觉流
  • 焦点态可见:2px --ring 色描边,禁止 outline: none 后无替代
  • Esc 关闭弹窗/抽屉/下拉;Enter 触发默认按钮
  • 弹窗打开后焦点移入弹窗,关闭后归还触发元素

9.4 触控与视觉辅助

  • 移动端可点击目标 ≥ 44×44px(含隐性热区)
  • 图片必须有 alt;纯装饰图 alt=""
  • 图标按钮必须有 aria-label(如购物车图标按钮)
  • 表单控件必须关联 <label>,错误提示用 aria-describedby 关联
  • 尊重系统「减少动态效果」偏好(prefers-reduced-motion
  • 不禁止浏览器缩放,字号随系统设置可放大

10. 动效系统(Motion)

动效服务于反馈与空间关系,不做装饰性炫技。

10.1 时长与缓动

时长场景缓动曲线
100ms微交互(按钮按压、开关)ease-out
200ms常规过渡(弹窗淡入、颜色变化)cubic-bezier(0.4, 0, 0.2, 1)
300ms大位移(抽屉滑出、页面切换)进入用减速曲线,退出用加速曲线

10.2 动效原则

  • 有意义:每个动效回答"发生了什么/元素从哪来到哪去"
  • 不打断:动效期间用户可继续操作,长动效可被中断
  • 快进慢出:进入动效比退出快,减少等待感
  • 全站一致:同类元素用同一动效语言

10.3 标准场景

场景动效
按钮点击100ms 轻微缩放/涟漪
弹窗淡入 + 中心缩放 200ms
抽屉侧滑 300ms + 遮罩淡入
轻提示 Toast顶部滑入 200ms,自动滑出
加购成功商品缩略图抛物线飞入购物车图标 + 角标弹跳
页面切换淡入 200ms(后台 TagsView 切换)
骨架屏微光扫过(shimmer)

11. 图标使用规范

规则标准
尺寸16px(行内辅助)/ 20px(按钮导航)/ 24px(卡片标题),同一场景统一
线宽统一 2px 线性描边风格,禁止线性与面性混用
语义使用公认隐喻(放大镜=搜索、垃圾桶=删除、齿轮=设置),禁止生僻比喻
图标+文字图标在左,间距 4-8px;重复操作可只用图标(需 tooltip)
颜色默认继承文字色;选中/激活态用语义色
可访问性纯图标按钮必须配 aria-label 或 tooltip

12. 层级与浮层系统(Z-index)

12.1 层级刻度(全站唯一,禁止自定义)

层级z-index元素
基础内容0页面普通内容
吸顶元素100前台 TopBar、后台 Header、吸顶筛选
表格吸附列500后台表格固定列
下拉浮层1000Select/DatePicker 弹层、Dropdown
抽屉1500Drawer + 遮罩
弹窗2000Dialog + 遮罩
轻提示3000Message/Toast
文字提示4000Tooltip

12.2 浮层规则

  • 遮罩:弹窗/抽屉遮罩 rgba(0,0,0,0.45);点击遮罩可关闭(重要表单除外)
  • 同一时刻只允许一个弹窗;弹窗内禁止再弹窗(用抽屉或分步替代)
  • Toast 最多同时堆叠 3 条,新的在上
  • 浮层打开时锁定底层滚动(移动端防穿透)

13. 性能与感知体验规范

13.1 性能预算(Core Web Vitals)

指标目标说明
LCP(最大内容绘制)≤ 2.5s首屏主图/主内容
INP(交互响应)≤ 200ms点击/输入反馈
CLS(累积布局偏移)≤ 0.1图片/广告必须预留尺寸

13.2 图片规范

  • 格式:优先 WebP,降级 JPG/PNG
  • 体积:列表缩略图 ≤50KB,详情大图 ≤200KB,Banner ≤300KB
  • 首屏外图片懒加载;<img> 必须声明宽高防 CLS
  • 加载失败显示统一占位图

13.3 感知性能(让等待不难受)

策略应用
乐观更新收藏/加购/开关:先更新 UI 再发请求,失败回滚并提示
骨架屏与实际布局同构,避免"闪烁";加载 <300ms 不显示骨架
渐进加载长列表滚动加载;后台表格虚拟滚动(>100 行)
超时兜底接口 10s 超时提示 + 重试;>2s 显示 loading
防抖节流搜索输入 300ms 防抖;滚动事件节流

14. 安全与隐私 UX

场景规范
密码输入默认掩码 + 可切换明文(眼睛图标);注册时显示强度条(弱/中/强)
敏感信息列表中手机号脱敏 138****8888;地址仅在详情/编辑页完整展示
协议授权注册/下单需用户主动勾选协议,协议可点开查看全文
会话安全登录态过期前提醒;过期后跳转登录并回跳;表单内容尽量保留
防钓鱼任何页面不主动索要密码;密码页展示安全提示
退出登录清除本地敏感数据(token/用户信息)
验证码图形/短信验证码防暴力破解;发送按钮 60s 倒计时

15. 数据可视化规范

15.1 图表选型

目的图表约束
趋势折线图系列 ≤5 条
对比柱状图类目 ≤12 个,超出横向条形图
占比饼图/环形图类目 ≤6 个,其余合并"其他"
分布散点图仅后台数据分析场景

15.2 图表通用规则

  • 颜色:用语义色板,单图 ≤6 色;避免红绿同时大面积出现(色盲友好)
  • 坐标轴:柱状图 Y 轴必须从 0 开始;网格线用虚线弱化
  • 图例:置于底部或顶部,可点击切换系列显隐
  • 数值:金额千分位;大数用「万/亿」单位;tooltip 显示精确值
  • 空数据:显示"暂无数据"占位,不渲染空坐标轴
  • 交互:hover 显示 tooltip;关键图表支持时间范围切换

16. 页面设计文档编写规范

本目录下所有页面设计文档按以下结构编写(PM 视角):

  1. 页面定位:这个页面为什么存在?服务什么用户的什么决策?
  2. 核心指标:这个页面要提升什么数据(转化率/停留时长/处理效率)?
  3. 页面结构:信息架构与布局(线框描述)
  4. 功能模块:每个区块的功能、字段、交互规则
  5. 业务规则:字段校验、状态流转、边界条件
  6. 状态设计:空态/加载/错误/无结果
  7. 体验优化:用户视角的优化点(分优先级)
  8. 验收标准:AC-xxx 格式的可测试条件

17. 骨架屏与动效规格(全站统一)

所有页面的加载态与动效必须复用以下标准骨架组件,禁止各页面自定义。

17.1 全局骨架组件库

17.1.1 商品卡片骨架(ProductCard Skeleton)

┌────────────────┐
│ ██████████████ │  1:1 正方形灰块,圆角 8px
│ ██████████████ │
│ ██████████████ │
├────────────────┤
│ ██████████     │  商品名:2 行灰条,宽 80%/60%
│ ██████         │
├────────────────┤
│ ████████       │  价格:宽 40%,高 16px
├────────────────┤
│ ██████         │  销量:宽 30%,高 12px
└────────────────┘
  • 尺寸:与真实商品卡片完全一致(移动 2 列 / 桌面 4-5 列)
  • 动画:shimmer 微光扫过(1.5s 循环)
  • 颜色:背景 --muted,微光 foreground/6%

17.1.2 表格行骨架(TableRow Skeleton)

│ ☐ │ ██ │ ████████ │ ██████ │ ████ │ ██████ │ ██████ │
  • 每行高度与实际表格行一致(48px)
  • 列宽按比例:复选框 40px / 缩略图 40px / 名称 30% / 其余均分
  • 显示 5-8 行(与实际数据行数一致)

17.1.3 指标卡片骨架(MetricCard Skeleton)

┌────────────────┐
│ ████████       │  标题:宽 50%,高 14px
│ ████████████   │  数值:宽 70%,高 28px
│ ██████         │  辅助:宽 40%,高 12px
└────────────────┘
  • 用于仪表盘、会员中心等指标卡片区
  • 卡片数量与实际一致(如 6 卡片 = 6 个骨架)

17.1.4 订单卡片骨架(OrderCard Skeleton)

┌──────────────────────────────────┐
│ ████████████          ████████   │  订单号 + 状态
├──────────────────────────────────┤
│ ██ ██████████  ██████  ████     │  商品图 + 名 + 价 + 数量
├──────────────────────────────────┤
│ ██████████████          ████████ │  合计 + 操作按钮
└──────────────────────────────────┘
  • 用于订单列表、售后列表
  • 显示 3-5 个卡片骨架

17.1.5 Banner 骨架(Banner Skeleton)

  • 桌面:5:2 比例灰块,高度 300px
  • 移动:2:1 比例灰块,高度 180px
  • 圆点指示器位置显示 3 个灰色小圆点

17.1.6 表单骨架(Form Skeleton)

  • 标签列:宽 100px 灰条,右对齐
  • 输入框列:宽 100%,高 32px,圆角 8px
  • 显示 4-6 行(与实际表单字段数一致)

17.2 页面级骨架映射表

页面骨架组合动画策略
首页Banner + 商品卡片×8 + 专题卡片×2各楼层独立加载,先到先显
分类页左侧栏 8 行灰条 + 右侧宫格 12 灰块左右同时加载
搜索页排序栏灰条 + 商品卡片×8排序栏立即显示,商品区骨架
商品详情Banner + 价格灰条 + 标题灰条 + 详情灰块从上到下渐进显示
购物车商品行骨架×3 + 底部结算栏灰条底部栏立即显示,商品区骨架
确认订单地址卡 + 商品行×2 + 金额灰条整体骨架,一次性显示
订单列表Tab 栏 + 订单卡片×3Tab 立即显示,卡片区骨架
订单详情状态头部 + 物流卡 + 地址卡 + 商品行×2从上到下渐进
会员中心用户头部 + 资产栏 + 订单入口 + 功能列表整体骨架
优惠券Tab 栏 + 券卡片×3Tab 立即显示,券区骨架
后台仪表盘指标卡×6 + 待办列表 + 图表区 + 表格各模块独立加载
后台列表页筛选区灰条 + 表格行×8 + 分页灰条筛选区立即显示,表格区骨架
后台表单页卡片×2-3 + 表单骨架整体骨架

17.3 动效规格表

动效场景时长缓动实现
骨架屏微光1.5s 循环lineards-shimmer 动画
页面淡入200msease-decelerateds-fade-in 动画
弹窗淡入 + 缩放200msease-standardopacity 0→1 + scale 0.95→1
抽屉侧滑300msease-deceleratetranslateX 100%→0 + 遮罩淡入
Toast 滑入200msease-deceleratetranslateY -100%→0
按钮按压100msease-outscale 1→0.98→1
加购成功300msease-decelerate抛物线飞入 + 角标弹跳
开关切换200msease-standard背景色过渡 + 圆点位移
Tab 切换200msease-standard下划线滑动 + 内容淡入
卡片悬停200msease-standardshadow-card → shadow-hover
骨架屏→内容200msease-decelerate骨架 opacity 1→0,内容 opacity 0→1

Mall 电商系统知识库