Files

123 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FloatButton Design Token
FloatButton 使用 `FloatButtonToken`(Token ID: `"FloatButton"`)作为组件级 Design Token。所有 Token 值均从全局 `SharedToken` 派生,不硬编码任何具体值。
---
## Token 资源访问方式
在 AXAML 中使用组件级 Token:
```xml
{atom:FloatButtonTokenResource FloatButtonSize}
{atom:FloatButtonTokenResource FloatButtonIconSize}
{atom:FloatButtonTokenResource PrimaryColor}
{atom:FloatButtonTokenResource FloatOffsetX}
```
在 AXAML 中使用全局共享 Token:
```xml
{atom:SharedTokenResource ColorPrimary}
{atom:SharedTokenResource ColorBgContainer}
{atom:SharedTokenResource ColorText}
```
---
## 组件级 Token 一览
以下是 `FloatButtonToken` 定义的全部组件级 Token。
### 尺寸 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `FloatButtonSize` | `double` | `SharedToken.ControlHeightLG` | 悬浮按钮整体尺寸(宽高相等) |
| `FloatButtonIconSize` | `double` | `SharedToken.FontSizeIcon × 1.5` | 按钮内图标尺寸 |
| `DescriptionLineHeight` | `double` | `SharedToken.FontSizeSM × 1.2` | Square 形状描述文本的行高 |
### 定位 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `FloatOffsetX` | `double` | `SharedToken.UniformlyMargin` | 默认水平偏移量 |
| `FloatOffsetY` | `double` | `SharedToken.UniformlyMargin` | 默认垂直偏移量 |
### 徽标偏移 Token
| Token 名 | 类型 | 来源计算公式 | 说明 |
|---|---|---|---|
| `SquareBadgeOffset` | `double` | `BorderRadius × (√2 - 1) / √2` | 方形按钮徽标偏移 |
| `CircleBadgeOffset` | `double` | `ControlHeight / 2 × (√2 - 1) / √2` | 圆形按钮徽标偏移 |
> 徽标偏移量基于几何计算:对于圆角矩形或圆形,徽标需要偏移到圆弧切线位置才能视觉上贴合角落。公式 `r × (√2 - 1) / √2` 正是将偏移定位到 45° 切线处。
### 颜色 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `PrimaryColor` | `Color` | `SharedToken.ColorTextLightSolid` | Primary 类型按钮的文本/图标颜色 |
---
## 主题中使用的全局 SharedToken
除组件级 Token 外,FloatButton 的 ControlTheme 还直接引用了以下全局 `SharedToken`:
### 颜色 Token
| Token 资源键 | 使用场景 |
|---|---|
| `ColorPrimary` | Primary 类型按钮背景色 |
| `ColorPrimaryHover` | Primary 类型按钮悬浮背景色 |
| `ColorBgContainer` | Default 类型按钮背景色 |
| `ColorText` | Default 类型图标颜色 |
| `ColorTextLightSolid` | Primary 类型文本/图标色(通过 `PrimaryColor` Token 间接引用) |
| `ColorTextDescription` | Square 形状描述文本颜色 |
### 尺寸 / 布局 Token
| Token 资源键 | 使用场景 |
|---|---|
| `ControlHeightLG` | 按钮尺寸基础值 |
| `FontSizeIcon` | 图标字号基础值 |
| `FontSizeSM` | 描述文本字号 |
| `BorderRadius` | 方形按钮圆角 |
| `UniformlyMargin` | 默认偏移量基础值 |
### 其他 Token
| Token 资源键 | 使用场景 |
|---|---|
| `EnableMotion` | 全局动画开关 |
| `MotionDurationMid` | 背景色过渡动画时长 |
| `BoxShadowSecondary` | 按钮阴影 |
---
## Token 对外观的具体影响
### 按钮类型与颜色映射
| 按钮类型 | 背景色 | 悬浮背景色 | 图标/文本色 |
|---|---|---|---|
| `Default` | `ColorBgContainer` | 稍浅灰色 | `ColorText` |
| `Primary` | `ColorPrimary` | `ColorPrimaryHover` | `PrimaryColor`(`ColorTextLightSolid`) |
### 形状与圆角映射
| 形状 | 圆角计算方式 |
|---|---|
| `Circle` | `Height / 2`(运行时动态计算,确保完全圆形) |
| `Square` | `SharedToken.BorderRadius` |
### 徽标偏移计算
徽标位置根据按钮形状使用不同的偏移值:
| 形状 | 偏移 Token | 位置效果 |
|---|---|---|
| `Circle` | `CircleBadgeOffset` | 徽标贴合圆形边缘 |
| `Square` | `SquareBadgeOffset` | 徽标贴合圆角矩形角落 |