关于 robis-design-best-practice
面向 UI 组件设计与评审的设计参考技能,涵盖颜色、对比度、间距、图标、暗色模式、动效和布局选择等实用准则。
主要功能
- 01低饱和度配色建议
- 02WCAG AAA 文本对比度目标
- 03统一的 4px 间距体系
- 04图标样式与尺寸一致性
- 05暗色模式的阴影替代方案
- 06动画与微交互指导
适用场景
- 01检查 UI 的颜色与对比度
- 02统一间距和嵌套圆角
- 03规范组件间的图标样式
- 04改进组件的暗色模式设计
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ethiopian-cursor-community/ robis-design-best-practice --skill robis-design-best-practice安装后在 Claude Code 中输入/robis-design-best-practice确认已加载。
附带文件examples.md
详细介绍
Robi 的设计最佳实践
快速参考清单
设计或审查 UI 组件时:
- 颜色饱和度较低(避免“氛围编程”式的过饱和颜色)
- 深色模式的颜色应适当降低饱和度或提高亮度
- 文本对比度符合 WCAG AAA 标准
- 不使用纯黑色(#000000)或纯白色(#FFFFFF),改用带色调的变体
- 所有间距均为 4px 的倍数
- 嵌套边框圆角遵循:
inner_radius = outer_radius - padding - 图标的粗细和样式始终保持一致
- 深色模式下避免使用阴影(改用边框或颜色)
- 动画使用平滑的缓动函数(而非线性缓动)
- 添加微交互,营造高级质感
颜色指南
避免过饱和颜色
“紫色互联网理论”指出,AI 和许多现代网站过度使用鲜艳、高饱和度的颜色。这会使用户眼睛疲劳,并缩短用户在网站上的停留时间。
HSL 基础知识:
- 色相:色轮上的位置(0-360°)
- 饱和度:颜色的浓烈程度(0-100%)
- 亮度:颜色的明暗程度(0-100%)
规则:除非采用新粗野主义设计,否则应以低饱和度为目标。
示例:
Bad: hsl(280, 100%, 60%) - Too vibrant purple
Good: hsl(280, 30%, 60%) - Muted, easier on eyes
深色模式下的颜色调整
颜色在黑色背景上看起来更亮。可通过以下方式进行补偿:
- 降低颜色饱和度(降低 10-20%)
- 略微提高亮度
Light mode: hsl(220, 40%, 50%)
Dark mode: hsl(220, 25%, 65%) // Less saturated, lighter
WCAG 对比度标准
文本与背景之间始终应以 AAA 评级为目标。
- AAA:最低对比度为 7:1
- AA:最低对比度为 4.5:1(可接受的备选标准)
可以使用 WebAIM Contrast Checker 等工具或浏览器内置的开发者工具。
防止光晕效应
白底纯黑或黑底纯白会产生一种称为光晕效应的“模糊光环”。
解决方案:使用略带色调的变体。
/* Instead of pure values */
/* Bad */ background: #000000;
/* Bad */ color: #FFFFFF;
/* Use tinted variations */
/* Good */ background: #0a0a0a; /* Slightly lighter black */
/* Good */ color: #fafafa; /* Slightly darker white */
/* Or with slight color tints */
/* Good */ background: hsl(220, 5%, 5%); /* Dark with blue tint */
/* Good */ color: hsl(40, 5%, 98%); /* Off-white with warm tint */
间距系统
所有间距必须为 4px 的倍数。
这样可以确保 UI 的视觉一致性和对齐效果。
Tailwind/Shadcn 间距比例
p-1 = 4px gap-1 = 4px
p-2 = 8px gap-2 = 8px
p-3 = 12px gap-3 = 12px
p-4 = 16px gap-4 = 16px
p-6 = 24px gap-6 = 24px
p-8 = 32px gap-8 = 32px
在设计中始终使用一致的间距值:
- 小间距:4px、8px
- 中间距:12px、16px
- 大间距:24px、32px、48px
边框圆角的叠加
嵌套带圆角的元素时,将内边距值加到圆角值中,以保持同心效果。
公式:inner_radius = outer_radius - padding
/* Parent container */
.outer {
border-radius: 16px;
padding: 12px;
}
/* Child element */
.inner {
border-radius: 4px; /* 16px - 12px = 4px */
}
Tailwind 示例:
<div className="rounded-2xl p-3"> {/* 16px radius, 12px padding */}
<div className="rounded"> {/* 4px radius */}
Content
</div>
</div>
图标一致性
切勿混用图标样式
不要混用:双色调、填充、常规、细线、轻量等不同粗细的样式。
Bad: Using filled home icon + regular settings icon + thin user icon
Good: All icons use regular weight and same size
显示激活/选中状态
混用规则的例外:可以使用同一图标的填充版本来表示激活/选中状态。
/* Navigation example */
<Icon
icon={isActive ? "home-filled" : "home-regular"}
weight="regular"
size={24}
/>
一致性规则
- 所有图标使用相同的粗细(例如,全部使用“常规”)
- 同一场景中的图标使用相同尺寸(例如,所有导航图标均为 24px)
- 为聚焦/激活状态的图标使用不同的描边颜色,或使用填充变体
- 避免混用不同图标库(不要混用 Phosphor 和 Heroicons)
阴影与深色模式
深色模式策略
在深色模式下,避免使用阴影表现高度。改用:
- 颜色柔和的边框
- 背景颜色变化
- 细微的亮度调整
/* Light mode */
.card-light {
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
/* Dark mode - use border instead */
.card-dark {
border: 1px solid rgba(255, 255, 255, 0.1);
background: hsl(220, 10%, 12%);
}
拟态设计注意事项
拟态设计高度依赖阴影来营造深度和真实感。这种设计在浅色模式下效果良好,但在深色模式下可能会有问题。请谨慎使用。
动画与缓动函数
避免线性缓动
线性运动(y=x)显得机械、不自然。
请使用平滑的缓动函数:
/* CSS */
/* Bad */ transition: all 0.3s linear;
/* Good */ transition: all 0.3s cubic-bezier(0.4, 0.0, 0.2, 1);
/* Common easings */
ease-out: cubic-bezier(0.0, 0.0, 0.2, 1) /* Decelerating */
ease-in-out: cubic-bezier(0.4, 0.0, 0.2, 1) /* Smooth both ends */
spring: Custom spring physics /* Bouncy, natural */
Framer Motion 示例
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{
duration: 0.4,
ease: [0.4, 0.0, 0.2, 1] // Custom cubic-bezier
}}
>
Content
</motion.div>
微交互
添加细微的交互细节,营造高级质感。Linear、Notion 和 Supabase 等公司在这方面表现出色。
微交互示例
- 按钮悬停状态配合平滑的颜色过渡
- 点击时略微缩放(scale: 0.98)
- 加载骨架屏动画
- 带滑入动画的 Toast 通知
- 复选框选中时的动画
- 输入框聚焦状态配合边框颜色过渡
- 带延迟和淡入效果的悬停工具提示
/* Button with micro-interaction */
<button className="
px-4 py-2 rounded-lg
bg-blue-600 hover:bg-blue-700
transform transition-all duration-200
hover:scale-[1.02] active:scale-[0.98]
">
Click me
</button>
布局替代方案
并非所有数据展示都需要用表格或卡片。
尝试其他布局:
- 用于任务管理的看板
- 用于按时间顺序展示数据的时间线视图
- 用于仪表盘的便当盒网格布局
- 带分隔线的列表组
- 用于展示层级数据的树形视图
- 用于媒体内容的画廊/瀑布流网格
- 手风琴式/可折叠分区
跳出表格/卡片模式,打造更具吸引力的界面。
设计灵感
浏览与学习
通过研究优秀作品培养设计品味:
可探索的平台:
- Pinterest - UI 设计模式与灵感
- Twitter - 设计主题帖和专家技巧
- cosmos.so - 组件与模式库
- Behance - 专业设计作品集
- Dribbble - UI 设计作品与概念
借鉴与模仿
“总有人比你更出色,做出了惊艳的作品——试着从中学习。”
流程:
- 找到你欣赏的设计
- 分析它们成功的原因
- 重现其中的元素,学习相关技巧
- 加以调整和筛选,融入自己的风格
品味正是通过接触优质作品和刻意练习逐渐形成的。
更多资源
代码示例和实现细节请参阅 examples.md。
参考:kigen.design/color,获取 HSL 颜色工具。