返回文章列表

「碎片」设计系统:莫奈色卡 × 玻璃态 × 卡片翻转

这套设计系统不是从零想的——是从莫奈的画里偷来的

「碎片」的配色直接取自莫奈的印象派画作:睡莲的绿、日本桥的蓝、日落的珊瑚、玫瑰园的红……然后包装成一套 CSS 变量 Token。

设计系统的核心是:用 8 个颜色 Token 支撑起 4 种卡片类型、6 种玻璃组件、2 种布局模式。

一、莫奈调色板

从莫奈的《睡莲》《日本桥》《日落》等画作中提取了 8 个颜色 Token:

Token色值灵感来源用途
--paper#fff4df米色画布底卡片基底
--ink#18231f松针深绿正文字色
--green#1f5a4d睡莲叶主强调色
--blue#31677b水面倒影次要强调色
--amber#b9782d黄昏光线笔记卡片强调
--coral#b85f48日落心情卡片强调
--rose#a84d63玫瑰园愿望卡片强调
--kicker#8a6045赭石日期标签

背景是一个三层渐变 + 模拟画布纹理:

background: 
  linear-gradient(150deg, #ecdfc8 0%, #dbe8e2 54%, #bfd6d1 100%),
  repeating-linear-gradient(0deg, transparent, transparent 56rpx, rgba(0,0,0,0.02) 56rpx, rgba(0,0,0,0.02) 57rpx);

这个渐变的三个颜色分别对应莫奈画中的草地、水面、天空——也是这个项目名字「碎片」的由来:把一幅画拆成色块,散落在交互里。


二、玻璃态组件体系

6 种玻璃态组件类,每个都用统一的毛玻璃公式:

background: rgba(255, 255, 255, 0.34~0.48)
backdrop-filter: blur(10px)
border: 2rpx solid rgba(255, 255, 255, 0.72~0.82)
组件圆角用途
.glass-panel60rpx主卡片面板
.chip-glass999rpx(药丸形)标签、分类筛选
.field-like36rpx输入框、按钮
.round-glass50%(圆形)头像、图标徽章
.paper-sheet60rpx时间轴卡片
.mark50%卡片类型指示标

透明度的数值经过反复调试:一开始设 0.18~0.26,在莫奈渐变背景上几乎完全消失。最终提到 0.34~0.48 才能看到清晰的玻璃质感。


三、卡片堆叠位置算法

首页的核心交互是一叠卡片,当前卡片居中,左右露出相邻卡片的边缘。这个位置计算用了一个 relativePosition() 函数:

function relativePosition(index, active, total) {
  // 环形回绕:计算当前卡片到活跃卡片的偏移量
  // 处理 wrap-around 情况(从最后一张划到第一张)
  // 返回 -2, -1, 0, 1, 2 等相对位置
}

每个相对位置对应一组 CSS 样式:

  • pos-active(0):居中,scale(1),opacity 1,z-index 4
  • pos-prev(-1):左侧偏移 260rpx,scale(0.88),opacity 0.82,z-index 2
  • pos-next(+1):右侧偏移 260rpx,scale(0.88),opacity 0.82,z-index 2
  • pos-far(其他):translateY(36rpx),scale(0.82),opacity 0.28,z-index 1

滑动切换的阈值:Math.abs(dx) >= 50 && Math.abs(dx) > Math.abs(dy)——水平划够 50px 且比垂直滑动多才触发切换。


四、卡片翻转机制

每张卡片都可以翻转——正面显示内容,反面是表单(填体重、记心情、写愿望)。

实现上用一个 flipMap[cardId] 状态映射表,驱动 wx:if / wx:else 切换显示正面或反面。数据在 JS 中预计算(buildCardsState()),避免在模板中动态计算——这是为了解决 WXML 的「true 文字渲染」bug。


五、4 种卡片类型 + 笔记工厂

卡片按类型区分,每种的样式和交互都不一样:

卡片类型底色强调色功能
体重(Body)#fff4df绿色记录体重、单位切换(kg/斤)
心情(Mood)#fff0dc珊瑚色记录今日心情语录
愿望(Wish)#f8faef玫瑰色愿望列表管理
笔记工厂(Note)8 色循环琥珀色每日笔记,每次新增换一个颜色

笔记工厂是最好玩的设计——每次点「写笔记」按钮,系统自动生成一张新的笔记卡片,颜色在 8 色调色板中循环。这 8 个颜色也是从莫奈画作中提取的,每张新卡片都像从画布上撕下的一小块碎片。


六、底部导航指示器

底部导航栏有一个会滑动的绿色透镜,跟随当前激活的 Tab。实现上用 createSelectorQuery() 动态计算每个 Tab 的宽度,而不是写死偏移量——这样即使未来修改了 Tab 文案也不会断裂。

点击 Tab 时,图标有一个 200ms 的弹跳动画(scale 关键帧),这是除了卡片滑动外最常用的交互反馈。

下一篇写「碎片」的架构:单页 SPA、Turso 边缘数据库、云函数代理、缓存优先策略——这个小程序的技术底子同样有料。