超大光标 — 视觉引导神器 是做什么的?
一个故意放大尺寸的类macOS指针,作为_可见的主角_穿越画面:它从屏幕外进入,引导观众视线至下一个兴趣点,点击触发下一个事件,然后离开。已在多个启动影片中经过生产验证。
为什么存在。 在启动视频中,大光标的移动是成本最低但收益最高的运动源之一:一个元素,仅需变换补间,并且它 (1) 在原本会显得死板的场景中将视线引过屏幕,(2) 为变形/转场提供因果触发(“是点击造成了那个”),(3) 在启动新场景或复杂动画序列时,帮助视线脱离静止状态。越大越好——实际尺寸的光标在视频尺度下会消失。
尺寸与外观(内部规范)
- 全帧场景:
7cqw(≈134px 在 1920 分辨率下)。模拟器内/小帧变体:4.6–5.5cqw。绝不要更小。 - 所有地方使用同一个SVG箭头几何。两种经过验证的填充方案——白色主体 + 黑色描边,或黑色主体(
#1c1c1c)+ 白色描边(1.4px)。根据场景对比度选择,在同一影片中保持不变。 - 品牌主题光标(强力玩法)。 macOS 箭头是默认选项,而非强制要求。当品牌拥有可识别的光标身份时——比如协作设计工具带有名称标签的彩色多人箭头(Figma 风格)、创意套件的精准十字准星、独特的产品指针——请使用该光标:对于了解该产品的任何人来说,这是立即能读懂的品牌语言。相同规则适用(超大尺寸、物理进出、尖端定位、点击触发),而带有名称标签的变体作为一个刚性单元移动(标签跟随箭头)。仅当该主题确实可被识别时才使用;一个无人识别的光标只是一个奇怪的箭头——退回到 macOS 默认。
filter: drop-shadow(0 4px 6px rgba(0,0,0,.3)),pointer-events: none,z-index高于所有场景内容,will-change: transform。
#root .cursor {
position: absolute;
left: 48%;
top: 115%; /* 屏幕外下方 — 静止姿势就在屏幕外 */
width: 7cqw;
height: 7cqw;
z-index: 20;
filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.3));
pointer-events: none;
will-change: transform;
}
入场法则 — 物理的,从不揭示
光标始终从屏幕外进入(标准:从下方,top:115–120%)并以一次减速滑翔到达其第一个目标。必须_感觉像它进入了房间_。绝不要通过透明度淡入到静止位置,绝不要使用蒙版揭示——这会被视为故障(一个真实、反复观察到的失败模式)。
- 默认路径:沿 y 轴直上到目标——没有碎片化的对角线。当它就是故事的一部分时(例如朝向偏离轴线的目标进入),对角线是可以的,但无论哪种方式,它都是一个连续的向量。
duration: 0.4–0.92s,ease: power3.out,在从到动画中设置immediateRender: false。
tl.fromTo(
cursor,
{ left: "48.6%", top: "115%" },
{ left: "48.6%", top: "55%", duration: 0.85, ease: "power3.out", immediateRender: false },
0.25,
);
尖端定位与点击触发
热点是箭头的尖端,而不是盒子的中心。将尖端落在目标的中心,并根据尖端调整所有按压缩放:transformOrigin: '21% 14%'(针对 24 单位 viewBox 中的内部箭头路径)。
点击 = 不对称的压缩/展开(1:2 比例读起来像真正的点击):
tl.to(cursor, { scale: 0.84, duration: 0.1, ease: "power2.in", transformOrigin: "21% 14%" }, t);
tl.to(
cursor,
{ scale: 1, duration: 0.22, ease: "power2.out", transformOrigin: "21% 14%" },
t + 0.1,
);
目标的反应是一个独立的、并行的补间(按钮:scale: 0.94 + 按压颜色/阴影,从同一个 t 开始)。仅光标的点击(例如聚焦文本输入)不触发目标反应。与 cursor-click-ripple / press-release-spring 配对用于目标侧。
点击驱动下一个节拍
绝不要让一个变形、打字运行、窗口变换或场景定义动画简单地_开始_。将光标停在触发器上,让点击在同一帧内引发它:
- 点击 ▸ 菜单/子菜单级联、切换翻转
- 点击 ▸ 输入框中的打字启动
- 点击 ▸ 创作器向下变形 / 窗口缩小
- 点击 ▸ Logo 点火 / 飞行启动
- 点击 ▸ 产品模拟中的播放状态切换 + UI 生命唤醒
在它不主导的长时间节拍中(打字、旁白),光标漂移到一边(0.5–0.9s,power2.out)——从不僵停在动作之上,从不无意义地摆动。
退出法则与跨场景交接
两种受认可的退出方式——都是物理的,绝不在原处淡出透明度:
- 离开画面:以
power2.in加速离开最近的边缘(left:'118%'、left:'-12%'或top:'116%'),用时 0.5–0.7s。 - 切曲线交接:在硬切前的最后约 0.3s,光标开始加速(
power2.in)朝向_下一个_场景的第一个点击点,覆盖该路径的前约 1/3;下一个合成使用gsap.set将光标设置在交接姿势,并以匹配的速度继续power2.out。光标本身成为缝合接缝的载体元素:
// 场景 A,最后 0.3s — 开始旅程:
tl.to(cursor, { left: "40.7%", top: "63.7%", duration: 0.3, ease: "power2.in" }, CUT - 0.3);
// 场景 B,t=0 — 以匹配速度完成:
gsap.set(cursorB, { left: "40.7%", top: "63.7%" });
tl.to(cursorB, { left: "22%", top: "45%", duration: 0.6, ease: "power2.out" }, 0);
检查清单
- ≥ 7cqw 全帧(模拟器内 4.6–5.5cqw)——不确定时,选更大的
- 从屏幕外沿一个连续向量进入(无淡入/蒙版揭示)
- 尖端落在目标中心;按压以
transformOrigin: '21% 14%'为轴心 - 每次点击都在同一帧内引起某事
- 在不主导的节拍期间漂移到一边;零空闲摆动
- 物理退出(离屏或切曲线交接)——无原地淡出