Skip to content

Latest commit

 

History

History
248 lines (167 loc) · 15.6 KB

File metadata and controls

248 lines (167 loc) · 15.6 KB

Violet — 空灵浪漫设计系统 (Ethereal Romance)

灵感源自梦幻后期处理的二月兰摄影作品——长春花蓝的弥散光斑、斑驳的阳光、极浅的景深。这不是一个“功能型”的办公软件 UI,而是一场**“悬浮在花海上的”坠入爱河的数字体验**。

1. 设计哲学 (Design Philosophy)

  • 弥散光斑即背景 (Dappled Light): 坚决摒弃死板的纯色背景。背景是缓慢游走的、带有呼吸感的渐变色块,模拟风吹过紫金草花海时,阳光透过树叶落下的斑驳光影。
  • 颗粒感即质感 (Film Grain): 全局 SVG noise 覆盖层注入胶片和粗糙画布的质感,彻底脱离现代数字产品的“廉价塑料感与AI感”。
  • Z轴景深与悬浮架构 (Floating Depth): 抛弃传统 Web 应用“撑满全屏、平铺直叙”的框架。核心交互区像一块巨大的玻璃悬浮在光斑背景之上,四周留白,建立起“前景清晰、背景虚化”的强烈景深感(大光圈效应)。
  • 拒绝生硬线条 (Organic Boundaries): 恋爱是柔软的。用光晕、半透明渐变(Gradient Borders)和内发光(Inner Shadows)来代替传统的 1px solid 分割线。界面元素应当像清晨花瓣上的露珠般晶莹剔透。
  • 从“填表”到“描绘” (Canvas over Forms): 拒绝工业化的表单输入。将枯燥的信息录入转化为极具仪式感的“画像绘制”,消除用户的“被审问感”,赋予填写过程情绪价值。

2. 色彩体系 (Color System)

不仅是颜色的堆砌,更是情绪的划分。

核心情绪色板(提取自初春摄影)

名称 色值 情绪/用途
Violet Light #d6e0ff 晨曦:弥散光斑、浅色背景、柔和过渡
Violet Main #8ca0ff 心动:主交互色、自己的消息气泡、主按钮
Violet Deep #6b82f0 笃定:Hover 态、品牌核心文字、强调图标
Spring Green #d4eda4 生机/指引:军师/AI助手模式专属辅助色、匹配徽章
Cream #fdfdfd 画纸:网页绝对底色(被噪点和光斑覆盖之上)

文字与轮廓色

名称 色值 用途
Ink #3a405a 主文字,带有微弱蓝色倾向的深灰,比纯黑更透气
Ink Muted #7a829a 次级文字、输入框占位符、次要图标
Glass Light rgba(255,255,255,0.7) 露珠质感的边框、高光高亮处

玻璃景深系统 (Glassmorphic Depth)

层级名称 CSS 变量 / 值 用途
底层光晕 blur(90px) 纯背景光斑,极度失焦
主控台玻璃 rgba(255,255,255,0.45) + blur(24px) 悬浮应用的主体容器
露珠内阴影 inset 0 0 0 1px rgba(255,255,255,0.5) 赋予卡片、输入框立体的“玻璃边缘反光”
柔光外阴影 0 30px 60px rgba(140,160,255,0.15) 让主控台脱离背景,产生漂浮感

3. 排版系统 (Typography)

诗意与可读性的平衡。

--font-serif: 'Cormorant Garamond', Georgia, serif;   /* 情绪表达、诗意、优雅 */
--font-sans: 'Outfit', -apple-system, sans-serif;       /* 现代感、清晰、青春 */
角色 字体 参数 备注
品牌名 & 大标题 Serif 300~400,斜体 宛如手写情书,用于 "Violet" 和主 Landing Page 标语
诗意焦点 (如宣言) Serif 20px+, 斜体 用于展现用户灵魂特质的文本框,赋予“写情书”的仪式感
界面模块标题 Serif 16px - 20px, 500 如“主聊天”、“军师私聊”的顶部标题,带入古典美
正文 (聊天/介绍) Sans 14px, 400 保证长时间阅读的可读性,清晰无负担
分类小标题 Sans 11px, 全大写 配合 letter-spacing: 1px,营造高级杂志排版感 (Editorial)

4. 核心视觉特效 (Signature Visuals)

1. 环境光斑 (Ambient Bokeh)

三个大型模糊圆形(blob),通过 CSS @keyframes 缓慢浮动且带有轻微缩放(呼吸感):

  • Blob 1 (Lilac): 左上角,高明度。
  • Blob 2 (Violet): 右下角,主体色,带位移动画。
  • Blob 3 (Spring Green): 游走于中下部,象征透过紫金草射进来的阳光,使用极低透明度。

2. 画布颗粒 (Canvas Grain)

通过全屏 SVG Filter 实现 feTurbulence(分形噪点)。 opacity: 0.05pointer-events: none。这是消除前端代码“生硬感”的终极武器。

3. 气质光晕 (Aura Avatars)

在无头像社交中,使用基于 CSS linear-gradient 的柔和彩色光晕替代默认的“灰色人头”。通过色彩融合暗示用户的性格特质(如:冷色系代表理性,暖粉系代表感性)。

5. 组件空间架构规范 (Component Architecture)

5.1 完善画像页 (Profile Canvas) 交互布局

彻底抛弃冗长垂直的表单填写,重构为**“双栏画卷 (The Open Book)”**:

  • 从纵向疲劳到双栏对比:不再需要用户一直往下滚动。利用宽屏优势,左边构建身份轮廓(骨架),右边点缀灵魂标签(血肉)。宛如一本翻开的书,极具古典与优雅气质。
  • 极简主义控件 (Minimalist Inputs):删掉 <select> 丑陋的外边框和箭头,取而代之的是 minimal-input(只有一条微弱的底边)。性别选择变成并排的“药丸按钮(Pills)”。这极大削弱了被系统“审问”的压迫感。
  • 信息分块降噪 (Editorial Chunking):右侧标签云拒绝“一锅粥”式堆砌。将其优雅地分为“文艺/思想”、“运动/户外”、“生活/休闲”等模块,配合杂志感标题,降低选择认知负荷。
  • 诗意的焦点提取:“恋爱宣言”是展现灵魂的地方。为其保留极大留白,强制使用 Serif 衬线字体,放大字号。让敲击键盘的过程充满仪式感。

5.2 发现页:灵魂画廊 (Soul Gallery)

彻底颠覆传统列表页的“简历审核感”。灵魂画廊不是一个页面,而是一场沉浸式的水平漫游体验

核心交互:垂直滚动 → 水平漫游 (Scroll Hijacking)

用户的自然垂直滚动行为被优雅地转译为画面的水平移动,如同缓缓展开一幅长卷轴。

  • 技术基座:Lenis(丝滑惯性滚动)+ GSAP ScrollTrigger(滚动进度 → 动画映射)。
  • 空间撑高:一个 .wapper 容器被设置为水平内容总宽度的等值高度,凭空创造出垂直滚动空间。实际内容容器 .container 使用 position: fixed 钉在视口内,其 translateX 值由滚动进度驱动。
  • 滚动状态感知<html> 标签在静止时为 class="lenis lenis-smooth",滚动时切换为 class="lenis lenis-scrolling",为全局提供滚动状态钩子。

视差纵深 (Parallax Depth)

画廊不是一个平面,而是拥有前景 / 中景两个速度层:

层级 元素 移动速度 视觉角色
中景 主内容(标题、卡片、统计) 1.0x 用户注意力焦点
前景 装饰波形 SVG (container-clips) 1.1x(额外 0.1x 叠加) 空间纵深暗示

装饰层是 .container 的子元素,继承父级 1x 位移后叠加自身 0.1x 额外位移,总计 1.1x。10% 的速度差足以制造“装饰在近处漂浮掠过”的空间感,而不至于晕眩。

装饰波形 (Waveform Clips)

11 个 SVG 波形图案散布在画廊各处,每个由约 60~100 条垂直 <line> 元素组成,y 值由 sine + 随机扰动生成,形似声波 / 心跳图。它们使用 Violet Main 色调 (#8ca0ff)、低透明度描边,入场时从右侧 translateX(50%) + opacity: 0 滑入归位。通过 CSS 变量 --cx(百分比水平位置)和 --cy(track 行号)定位在网格上。

水平轨道网格 (Track Grid)

视口被 10 条水平轨道线均分(每条 10vh),使用 Violet Main 色的半透明渐变线 (linear-gradient(90deg, transparent, #8ca0ff, transparent))。它们不是装饰——所有内容元素的垂直位置都以 --track-h 的整数倍对齐,赋予画廊严谨的网格秩序感。入场时各线从左向右 scaleX(0→1) 依次展开。

Playhead 播放指针

一条固定在视口中央的垂直渐变线(顶底透明、中间 Violet Deep 色),如同时间线编辑器中的播放指针,暗示“你正处于画廊的某个位置”。入场时从底部 scaleY(0→1) 伸展。

自定义 Scrollbar

原生滚动条被 ::-webkit-scrollbar { display: none } 隐藏,替换为右侧固定的极简滚动指示器:

  • Thumb 使用 Violet Main → Deep 的渐变色 + 圆角胶囊形。
  • 高度和位置通过 CSS 变量 --thumb-h / --thumb-y 实时驱动,与 ScrollTrigger 的 progress 联动。
  • Hover 时降低透明度,保持克制。

内容分区 (Horizontal Sections)

画廊从左到右依次展开五个内容区:

  1. 标题区 (Header):大号 Serif 斜体 “Soul Gallery” + 品牌描述 + 装饰方块阵列。文字使用 overflow-clip + translateY(100%) 的逐行入场动画。
  2. 精选灵魂 (Featured):一个大尺寸 Aura 渐变卡片,展示平台精选用户的恋爱宣言。左侧带竖排 “Featured” 标签提示。入场时从 scale(0) 以左上角为原点展开,配合边框呼吸和引用文字淡入。
  3. 关于 (About):平台理念的文字介绍。使用大号空心 Serif 描边字作为装饰性标题,正文渐显入场。
  4. 校园脉搏 (Campus Pulse):活跃灵魂、心动数、匹配数等关键数据。每行使用 translateY(100%) 滑入 + 进度条 scaleX(0→var(--p)) 从左生长动画。
  5. 灵魂卡片 (Soul Cards):核心内容区,详见下方。

灵魂卡片 (Soul Card)

卡片采用 阶梯式错落排列,通过 CSS 变量 --track-index 控制垂直偏移(如 0/3/1/2/4/1),创造高低起伏的视觉节奏,而非简单的水平一字排开。

每张卡片由两个主体组成:

  • Aura 光晕区:使用 linear-gradient 渲染用户的灵魂色谱(冷蓝 / 暖粉 / 绿蓝 / 粉紫等),替代传统头像。中央叠加半透明玻璃层和大号性别符号,保持匿名感。
  • 内容区:校区信息(大写无衬线)、恋爱宣言(Serif 斜体)、旋转十字装饰、兴趣标签药丸。
卡片入场动画编排 (Reveal Choreography)

当卡片随水平滚动进入视口 85% 位置时,触发一套精心编排的入场序列:

t=0.0s   Aura 光晕区 clip-path 从左向右擦开
         polygon(0,0,0,0) → polygon(0,100%,100%,0)
         ——如同帷幕从左侧缓缓拉开

t=0.3s   校区信息文字从下方滑入归位 (translateY → 0)

t=0.4s   恋爱宣言逐行揭示
         每行包裹在 overflow:clip 容器中
         内层从 translateY(100%) 滑入,各行间隔 80ms

t=0.5s   十字装饰从 scale(0) 弹出 (back.out 弹性缓动)
         随后进入 8s 一周期的缓慢旋转循环

t=0.55s  兴趣标签行从下方滑入

这套动画的灵魂在于:观众不是一次性看到所有信息,而是如同翻阅一封信件般,逐层、逐行地“读”到这个灵魂的故事。

玻璃悬浮导航栏 (Floating Nav Bar)

固定在视口顶部的导航栏,使用 rgba(253,253,253,0.55) + backdrop-filter: blur(18px) 的玻璃拟态效果,底部以 rgba(255,255,255,0.5) 光线代替实线分割。

位置 元素 样式
左侧 Violet Logo + 导航标签组(发现 / 已发起 / 收到心动 / 关系) 药丸按钮组,active 态白底紫字 + 柔光阴影
右侧 积分显示 + 军师大厅 / 管理 / 个人中心 / 退出 各按钮保持独立色彩语义(紫=军师、绿=管理、白=通用)

导航栏入场时从顶部 translateY(-100%) 滑入,与 track 线展开同步。响应式策略:窄屏下隐藏标签组和次要按钮,仅保留 Logo + 核心功能入口。

5.3 破冰聊天页 (Icebreaker Chat) 空间布局

采用 悬浮双子星架构

  • 主容器:宽度 92vw,高度 90vh,绝对居中。带有一圈微弱白色内发光,背景为重度毛玻璃。
  • 柔性分割:左侧主聊天(60%);右侧军师私聊(40%)。两者之间禁止使用实线,使用 linear-gradient(to right, rgba(255,255,255,0.1), transparent) 制造光的隔断。
  • 沉浸式输入框 (Dewdrop Input):高亮度白底,圆角 30px。Focus 时增强白色内阴影,模拟水滴折射光芒。

6. 动效与交互微反馈 (Motion & Micro-feedback)

6.1 全局动效原则

  • 有机缓动曲线 (Organic Easing):彻底弃用 linear。全局使用 cubic-bezier(0.2, 0.8, 0.2, 1)(迅捷启动,极其柔和的刹车),模拟自然风吹草动时的非线性物理感。
  • 温柔的情绪关怀 (Micro-feedback):交互不仅服务于功能,更服务于情绪。例如在选择标签达到上限(10个)时,不再弹出生硬冰冷的系统警告框,而是让数字计数器产生一次极其轻微的水平震动
  • 触碰的生命力:标签选中时,不仅改变颜色,还会伴随向上的轻微浮起(translateY(-2px))并散发紫色的渐变光晕,仿佛指尖点亮了某个星辰。

6.2 入场编排体系 (Entrance Choreography)

Violet 的入场动画遵循一套统一的编排语言,贯穿所有页面:

文字揭示 (Text Reveal)

所有标题和关键文案使用逐行滑入动画:外层 overflow: clip 遮罩,内层 translateY(100%)translateY(0) 上推入场。各行之间间隔 80~100ms,如同诗句逐行浮现。

容器展开 (Container Unfold)

大型内容区域(如 Featured Aura、View Image)使用 clip-pathscale 的展开动画:

  • clip-path: polygon(0 0, 0 0, 0 100%, 0 100%) → 全展开(左→右帷幕效果)
  • transform: scale(0) + transform-origin: left topscale(1)(左上角生长效果)

装饰淡入 (Decoration Fade)

装饰元素(方块阵列、十字图标、波形 SVG)从 opacity: 0 + 轻微偏移入场,stagger 间隔 30~60ms,产生粒子扩散的视觉。

编排时间线 (Master Timeline)

入场时的全局时间线以 0.3s 延迟启动后依次展开:

t=0.0s   Track 轨道线从左向右依次展开 (stagger 50ms)
t=0.1s   导航栏从顶部滑入
t=0.3s   Playhead 播放指针从底部伸展
t=0.6s   标题区眉标文字滑入
t=0.7s   “Soul” 标题滑入
t=0.85s  “Gallery” 标题滑入
t=0.8s   装饰波形依次淡入归位 (stagger 60ms)
t=1.0s   描述文字滑入
t=1.1s   方块阵列逐个点亮 (stagger 30ms)
t=1.5s   Scrollbar 渐显

6.3 滚动驱动动画 (Scroll-Driven Animation)

灵魂画廊中,内容区的入场不依赖固定时间,而是由水平滚动位置触发

  • 各 section 在进入视口 80% 位置时触发入场序列。
  • 卡片在进入视口 85% 位置时触发 Reveal Choreography(详见 5.2 节)。
  • 统计条在入场后 scaleX(0)scaleX(var(--p)) 生长,映射数据比例。
  • 所有触发均为一次性(不可逆),避免反复播放带来的视觉噪音。

6.4 循环微动画 (Ambient Loops)

  • 十字装饰旋转8s 一周期,ease-in-out 缓动,每张卡片通过 --cd 变量设置不同的 animation-delay,避免同步旋转的机械感。
  • 装饰方块闪烁2s 一周期,steps(1) 阶梯函数,模拟电子屏幕的数字脉冲。
  • Bokeh 光斑漂移:18~25s 周期的缓慢位移 + 缩放,alternate 方向交替,模拟自然光影的呼吸感。

Violet Design System. Engineered to feel like a spring breeze.