2006年,前端开发工程师Brad Frost在构建复杂设计系统时提出了原子设计方法论。这种设计理念将界面元素类比为化学物质的基本构成单位,从微观到宏观分为五个层级:原子(Atoms)、分子(Molecules)、有机体(Organisms)、模板(Templates)和页面(Pages)。
在Sketch或Figma中新建一个项目时,我们通常会从最基础的按钮、输入框开始设计。这些就是原子设计中的"原子"——不可再分的最小UI元素。就像氢原子和氧原子可以组合成水分子(H₂O)一样,标签、输入框和按钮这三个原子可以组合成"搜索表单"这个分子。
关键认知:原子设计不是简单的组件分类,而是建立了一套从底层到表层的系统化构建思维。这就像用乐高积木搭建模型,先有基础颗粒,再有组合模块,最终完成复杂造型。
包括颜色、字体、图标、分割线等基础样式,以及按钮、输入框等不可再分的HTML标签。在代码层面表现为:
css复制/* 颜色变量 */
:root {
--primary: #3a86ff;
--text-base: #2d3748;
}
/* 基础按钮 */
.btn {
padding: 8px 16px;
border-radius: 4px;
font-family: 'Inter', sans-serif;
}
由2-3个原子组成的简单组合,例如:
这些组合具有明确的功能单一性。在React中可能表现为:
jsx复制function SearchBar() {
return (
<div className="search-bar">
<input type="text" placeholder="搜索..." />
<button className="btn">搜索</button>
</div>
)
}
由分子和原子组成的复杂区块,比如:
这个层级的组件开始具有明确的业务属性。以电商网站为例:
jsx复制function ProductGrid({ products }) {
return (
<section className="product-grid">
<FilterSidebar />
<div className="grid">
{products.map(product => (
<ProductCard key={product.id} data={product} />
))}
</div>
<Pagination />
</section>
)
}
将有机体组合成页面框架,此时关注的是:
Figma中常用的做法是创建带有灰色占位区块的wireframe,明确各有机体的位置关系而不填充具体内容。
模板填充真实内容后的最终形态,需要考虑:
从最基础的样式属性开始定义:
json复制{
"color": {
"primary": {
"base": "#3a86ff",
"light": "#ebf4ff",
"dark": "#1e4e8c"
}
},
"spacing": {
"base": "4px",
"sm": "8px",
"md": "16px"
}
}
这些token会同步到CSS变量和设计工具样式库中。
推荐使用Storybook等工具管理组件:
成熟团队应该建立:
避免使用具体业务命名(如homepage-banner),而应该采用功能描述(如hero-with-cta)。好的命名示例:
avatar-group(头像组)data-table(数据表格)accordion(手风琴组件)不是所有场景都需要原子化。对于高频修改的营销区块,保持一定灵活性比严格拆分更实用。
移动端可能需要重组分子结构。例如桌面端的sidebar + content在移动端应该变成accordion组件。
优秀的组件文档应包含:
在团队规模超过5人时,建议建立专门的设计系统团队(通常包括1名设计师、1名前端和1名产品经理)来维护这套体系。初期投入可能增加20%的开发时间,但在项目迭代3次以上时,整体效率会提升40%以上。
维护过程中最容易被忽视的是设计token的版本管理。当需要调整品牌色时,如果直接修改基础色值而不考虑向下兼容,可能导致已有界面出现意料之外的变化。稳妥的做法是:
primary-500-legacy)primary-500-new)对于营销活动页面这类需要快速迭代的场景,可以采用"原子设计+"策略:在保持核心组件规范的前提下,允许创建一次性组合组件,但需标记为@deprecated并在活动结束后清理。