触发方式
列表中指针进入预览区域后播放,按配置的循环选项重复,离开即停止;详情中自动播放加载效果;播放期间按钮显示暂停,暂停后保留当前画面,再次播放从暂停处继续。 详情页自动按配置播放完整周期;暂停保持当前画面,继续从同一进度接续,不反向返回。
起点与终点
打字机整体的纵向位移:0 → 0(含 6 个关键帧);字车的横向位移:14 → 14(含 106 个关键帧);前层纸张的纵向位移:46 → 46(含 12 个关键帧);按键 1的纵向位移:0 → 0(含 5 个关键帧);按键 2的纵向位移:0 → 0(含 5 个关键帧);按键 3的纵向位移:0 → 0(含 5 个关键帧);按键 4的纵向位移:0 → 0(含 5 个关键帧);按键 5的纵向位移:0 → 0;按键 6的纵向位移:0 → 0(含 5 个关键帧);按键 7的纵向位移:0 → 0(含 5 个关键帧);按键 8的纵向位移:0 → 0(含 5 个关键帧);按键 9的纵向位移:0 → 0(含 5 个关键帧);按键 10的纵向位移:0 → 0(含 5 个关键帧);按键 11的纵向位移:0 → 0(含 5 个关键帧);按键 12的纵向位移:0 → 0(含 5 个关键帧);整体的横向位移:0 → 0;整体的纵向位移:0 → 0;整体的缩放:1 → 1。
时序
总时长 3000 ms,统一触发延迟 0 ms,三次贝塞尔曲线 cubic-bezier(0, 0, 1, 1)。各轨道按配置中的 start / span 和 times 分阶段运行。
进入与退出
按键依次敲击,纸张分段上移;一轮末尾字车回位,纸张复位,机身轻微弹跳。暂停保留所有部件的当前进度,继续时接续同一周期。持续重复完整打字周期。
重复操作与打断
暂停保持当前周期进度,继续接续;修改参数时按新配置从完整周期起点重播,不排队。
减少动态效果
遵循系统 prefers-reduced-motion,跳过延迟、循环和动画,直接呈现目标帧。观察倍速只修改 Motion 控制器 speed,不写入配置。
默认配置
这些数值来自当前维护的默认配置;编辑器草稿和调整后的导出可以不同。
{
"schemaVersion": 2,
"recipeId": "typewriter",
"durationMs": 3000,
"delayMs": 0,
"easing": [
0,
0,
1,
1
],
"offsetX": 0,
"offsetY": 0,
"scale": 1,
"loop": true,
"interruption": "retarget",
"tracks": [
{
"part": "machine",
"property": "y",
"values": [
0,
0,
-4,
0,
2,
0
],
"times": [
0,
0.85,
0.89,
0.92,
0.95,
1
],
"start": 0,
"span": 1
},
{
"part": "carriage",
"property": "x",
"values": [
14,
14,
13.73639,
13.24163,
12.51635,
11.63805,
10.73192,
9.89348,
9.16164,
8.53968,
8.01717,
7.58077,
7.21798,
6.91817,
6.67253,
6.47388,
6.31633,
6.195,
6.10584,
6.04547,
6.011,
6,
6,
5.80229,
5.43122,
4.88726,
4.22853,
3.54894,
2.92011,
2.37123,
1.90476,
1.51288,
1.18558,
0.91349,
0.68862,
0.5044,
0.35541,
0.23725,
0.14625,
0.07938,
0.0341,
0.00825,
0,
0,
-0.13181,
-0.37919,
-0.74183,
-1.18098,
-1.63404,
-2.05326,
-2.41918,
-2.73016,
-2.99141,
-3.20961,
-3.39101,
-3.54092,
-3.66374,
-3.76306,
-3.84184,
-3.9025,
-3.94708,
-3.97727,
-3.9945,
-4,
-4,
-4.26361,
-4.75837,
-5.48365,
-6.36195,
-7.26808,
-8.10652,
-8.83836,
-9.46032,
-9.98283,
-10.41923,
-10.78202,
-11.08183,
-11.32747,
-11.52612,
-11.68367,
-11.805,
-11.89416,
-11.95453,
-11.989,
-12,
-12,
-11.14326,
-9.5353,
-7.17813,
-4.32365,
-1.37872,
1.34619,
3.72466,
5.74605,
7.44419,
8.86249,
10.04155,
11.01596,
11.81428,
12.45988,
12.97193,
13.36626,
13.65601,
13.85223,
13.96424,
14
],
"times": [
0,
0.05,
0.055,
0.06,
0.065,
0.07,
0.075,
0.08,
0.085,
0.09,
0.095,
0.1,
0.105,
0.11,
0.115,
0.12,
0.125,
0.13,
0.135,
0.14,
0.145,
0.15,
0.3,
0.305,
0.31,
0.315,
0.32,
0.325,
0.33,
0.335,
0.34,
0.345,
0.35,
0.355,
0.36,
0.365,
0.37,
0.375,
0.38,
0.385,
0.39,
0.395,
0.4,
0.55,
0.555,
0.56,
0.565,
0.57,
0.575,
0.58,
0.585,
0.59,
0.595,
0.6,
0.605,
0.61,
0.615,
0.62,
0.625,
0.63,
0.635,
0.64,
0.645,
0.65,
0.7,
0.705,
0.71,
0.715,
0.72,
0.725,
0.73,
0.735,
0.74,
0.745,
0.75,
0.755,
0.76,
0.765,
0.77,
0.775,
0.78,
0.785,
0.79,
0.795,
0.8,
0.89,
0.8955,
0.901,
0.9065,
0.912,
0.9175,
0.923,
0.9285,
0.934,
0.9395,
0.945,
0.9505,
0.956,
0.9615,
0.967,
0.9725,
0.978,
0.9835,
0.989,
0.9945,
1
],
"start": 0,
"span": 1
},
{
"part": "paper",
"property": "y",
"values": [
46,
46,
34,
34,
22,
22,
10,
10,
0,
0,
46,
46
],
"times": [
0,
0.05,
0.2,
0.3,
0.4,
0.55,
0.65,
0.7,
0.8,
0.85,
0.92,
1
],
"start": 0,
"span": 1
},
{
"part": "key0",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.05,
0.09,
0.12,
1
],
"start": 0,
"span": 1
},
{
"part": "key1",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.48,
0.54,
0.57,
1
],
"start": 0,
"span": 1
},
{
"part": "key2",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.66,
0.72,
0.75,
1
],
"start": 0,
"span": 1
},
{
"part": "key3",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.12,
0.18,
0.21,
1
],
"start": 0,
"span": 1
},
{
"part": "key4",
"property": "y",
"values": [
0,
0
],
"times": [
0,
1
],
"start": 0,
"span": 1
},
{
"part": "key5",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.39,
0.45,
0.48,
1
],
"start": 0,
"span": 1
},
{
"part": "key6",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.21,
0.27,
0.3,
1
],
"start": 0,
"span": 1
},
{
"part": "key7",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.75,
0.81,
0.84,
1
],
"start": 0,
"span": 1
},
{
"part": "key8",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.3,
0.36,
0.39,
1
],
"start": 0,
"span": 1
},
{
"part": "key9",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.3,
0.36,
0.39,
1
],
"start": 0,
"span": 1
},
{
"part": "key10",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.3,
0.36,
0.39,
1
],
"start": 0,
"span": 1
},
{
"part": "key11",
"property": "y",
"values": [
0,
0,
2,
0,
0
],
"times": [
0,
0.57,
0.63,
0.66,
1
],
"start": 0,
"span": 1
}
]
}源码与复用
GitHub 对应示例提供公开渲染源码、默认配置和运行入口。复用前请阅读交互说明,并保留随源码附带的第三方与字体许可;完整网页编辑器由独立工程维护。
用于自己的项目
进入编辑器运行真实预览并比较调整;本说明页不另造一份近似演示。把导出用于自己的项目后,重新检查内容、输入、焦点与布局。
目录来源标注:Uiverse.io · Nawsome. 第三方示例保留自己的许可与署名;公开仓库包含全部当前动效的渲染源码;完整编辑器由独立工程维护。