表情矩阵
12 states
布鲁斯飞行员 · 原生矢量 SMIL 动画 · 点击卡片进入聚光台
动效规范
Motion Spec · 供产品各角落嵌入时对齐
色板 · 品牌原色 + 语义色
缓动 · SMIL keySplines 预设
SMIL 的 keySplines 控制点必须在 [0,1] 内,过冲(弹簧感)不靠曲线而靠关键帧值序列:先冲过目标再回落。
节奏表
尺寸阶梯 · idle 为例(独立文件 <img> 加载)
16px 用于行内状态点,24–48px 用于列表与按钮,64–128px 用于空态与等待页,256px 原尺寸用于祝贺弹层与博客插画。深色底自动带冰蓝轮廓光(rim light),浅色底轮廓光隐入背景。
嵌入指南
Embed · 零依赖,SMIL 在 <img> 与内联两种形态下都播放
1 · 作为图片(推荐,天然隔离渐变 ID)
<!-- SMIL 动画在 img 中正常播放(WebKit / Chromium),无需 JS -->
<img src="brand/emotion/qwen4-max-preview-default/stickers/celebrate.svg"
width="96" height="96" alt="任务完成,布鲁斯庆祝"/>
2 · 内联(需要程序控制时)
// 每个文件的渐变/裁剪 ID 都带表情前缀(idle-、celebrate-…),多枚内联不冲突
const svg = document.querySelector('svg[data-sticker="radar"]');
svg.pauseAnimations(); // 暂停
svg.setCurrentTime(1.2); // 精确到帧 scrub
svg.unpauseAnimations(); // 继续
3 · 尊重系统「减少动态」
if (matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelectorAll('svg.bruce-emotion')
.forEach(s => { s.pauseAnimations(); s.setCurrentTime(0); });
}
注意:CSS 的 animation-play-state 管不到 SMIL;减少动态必须走 pauseAnimations()。本页控制台已内置该开关,并在系统偏好开启时自动暂停。
4 · 场景对照
| 产品角落 | 推荐表情 |
| Agent 等待 / 推理 | thinking radar working |
| 任务完成 / 发布祝贺 | celebrate done launch |
| 出错 / 断线安抚 | sad alert |
| 空闲头像 / 离线 / 深夜 | idle sleep |
| 点赞 / 感谢 / 收藏 | love |
| 博客插画 / 空态 | launch searching celebrate(256px 原尺寸) |