mcpField
C
continuous-infinite

continuous-infinite

github.com/dylantarre设计与 UI132496 次安装43 周前更新
代码仓库

关于 continuous-infinite

一项关于设计微妙、无缝循环的无限动画的设计技能,涵盖运动原则、循环时长、缓动方式及减少视觉疲劳的方法。

主要功能

  1. 01微妙动效的设计指导
  2. 02无缝循环设计
  3. 03循环时长建议
  4. 04缓动曲线示例
  5. 05常见问题提示

适用场景

  1. 01设计加载指示器
  2. 02添加环境背景动效
  3. 03制作脉冲状态指示器

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dylantarre/animation-principles --skill continuous-infinite

安装后在 Claude Code 中输入/continuous-infinite确认已加载。

详细介绍

连续动画(无限循环)

无限动画没有结束状态。它们用于表示持续进行的过程、营造氛围,或提供持续的视觉趣味。挑战在于:避免造成疲劳。

连续运动的迪士尼原则

可持续应用

挤压与拉伸:幅度轻微、节奏平稳,振荡幅度为 5-10%,不会引人注意。像呼吸,而不是弹跳。

预备动作:融入循环中,每个周期都应自然过渡到下一个周期,不出现明显的重新开始。

演出布局:构建背景层级,连续运动不得与交互元素争抢注意力。

直线运动/姿势到姿势:无缝循环优先采用姿势到姿势的方式,终点必须与起点完美衔接。

跟随动作:让波动依次传播,使元素按顺序移动,形成自然流动感。

慢入慢出:采用平滑、无尽的曲线,不要突然加速,以免引人注意。

弧线:采用圆形、轨道式路径,自然回到起点。可使用 8 字形、椭圆和波浪轨迹。

次要动作:叠加多层环境运动,让多个元素以不同速度移动,从而营造纵深感。

节奏:让周期时长各不相同,元素不要同步。使用互质的周期时长(3s、5s、7s)。

夸张:尽量减少。细微的动作可以避免疲劳,用户几乎不应察觉到运动。

扎实绘图:优先采用简单的变换,复杂动画会消耗电量并分散注意力。

吸引力:保持平和,而非混乱。连续运动应让人平静,而不是兴奋。

循环时长指南

  • 加载旋转图标:周期为 800-1200ms
  • 呼吸/脉动:周期为 2000-4000ms
  • 环境背景:周期为 5000-15000ms
  • 轻微浮动:周期为 3000-8000ms

缓动建议

/* Seamless breathing */
animation-timing-function: ease-in-out;

/* Perpetual smooth motion */
animation-timing-function: cubic-bezier(0.37, 0, 0.63, 1);

/* Organic, natural feeling */
animation-timing-function: cubic-bezier(0.45, 0.05, 0.55, 0.95);

最佳使用场景

  • 加载/进度指示器
  • 环境背景效果
  • 音乐可视化
  • 屏幕保护程序风格的显示
  • 状态指示器(脉动的在线状态圆点)
  • 吸引注意力的效果(轻柔的通知脉动)
  • 装饰性运动(浮动粒子)

实现模式

/* Seamless spin */
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
.spinner {
  animation: spin 1000ms linear infinite;
}

/* Breathing pulse */
@keyframes breathe {
  0%, 100% { transform: scale(1); opacity: 0.7; }
  50% { transform: scale(1.05); opacity: 1; }
}
.pulse {
  animation: breathe 3000ms ease-in-out infinite;
}

/* Floating ambient - use multiple with prime-number durations */
@keyframes float {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-10px) rotate(2deg); }
  66% { transform: translateY(5px) rotate(-1deg); }
}
.float-a { animation: float 5000ms ease-in-out infinite; }
.float-b { animation: float 7000ms ease-in-out infinite; }
.float-c { animation: float 11000ms ease-in-out infinite; }

反面模式

  • 将多个连续动画同步
  • 高频运动(会引起恶心)
  • 在周边视野中进行大范围运动
  • 与主要内容争抢注意力
  • 用户输入/聚焦期间仍持续运行

关键见解

连续动画必须做到设计上不可察觉。如果用户在最初几秒后仍能有意识地注意到它们,说明动作过于强烈。最好的无限动画给人氛围感,而不是让人看到运动。

评论

支持 Markdown