mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-19 06:58:57 +08:00
1.9 KiB
1.9 KiB
Grid Design Token
Grid 栅格系统(Row / Col)是一个纯布局控件,不定义任何组件级 Design Token(无 GridToken 类),也不消费全局 SharedToken 中的视觉属性。
设计原因
栅格系统的唯一职责是空间分配与子元素排列——它将容器宽度等分为 24 份,按照 Span、Offset、Gutter、Justify、Align 等参数计算每个列的位置和尺寸。栅格自身不渲染任何可见的背景色、边框、字体或间距 Token,所有视觉样式由放置在 Col 内的子控件自行管理。
这与 Ant Design 的 Grid 组件一致——React 版本的 Grid 也没有独立的 Design Token。
间距配置 vs Design Token
虽然 Grid 不使用 Design Token,但 Row.Gutter 属性提供了等效的间距控制能力:
| 配置方式 | 示例 | 说明 |
|---|---|---|
| 固定间距 | Gutter="16" |
所有断点使用相同间距 |
| 水平+垂直 | Gutter="16,24" |
水平 16px,垂直 24px |
| 响应式间距 | Gutter="xs:8,sm:16,md:24,lg:32" |
不同断点使用不同间距 |
这些间距值由开发者直接指定,而非从 Token 系统派生。如果希望保持与主题的一致性,建议使用 SharedToken 中的间距值:
<!-- 使用 SharedToken 间距值保持主题一致性 -->
<atom:Row Gutter="{atom:SharedTokenResource Spacing}">
<!-- ... -->
</atom:Row>
子控件的 Token 使用
放置在 Col 内的子控件正常使用各自的 Design Token。例如:
<atom:Row Gutter="16,16">
<atom:Col Span="12">
<!-- Button 使用 ButtonToken -->
<atom:Button ButtonType="Primary">Submit</atom:Button>
</atom:Col>
<atom:Col Span="12">
<!-- Tag 使用 TagToken -->
<atom:Tag TagColor="Processing">Processing</atom:Tag>
</atom:Col>
</atom:Row>
Grid 不会干扰子控件的 Token 作用域。