Skip to main content
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →
交互设计阅读时间 11 分钟·ExodeUI 团队

微交互:15 个示例以及如何设计它们

微交互解释:定义、Dan Saffer 的四个部分、按类型分组的 15 个真实示例、设计规则以及如何在 CSS、Framer Motion、GSAP 或 ExodeUI 中构建它们。

直接总结和定义

核心要点

微交互是界面中一个小的、包含的时刻,它执行一件事:喜欢帖子、切换设置、确认表单或完成手势。该术语及其剖析来自 Dan Saffer,他定义了四个部分。触发器启动它,规则决定发生什么,反馈显示结果,循环或模式控制它随着时间的推移所做的事情。好的微交互是短暂的,响应用户自己的输入,并且保持可中断。

什么是微交互?

微交互是产品中最小的完整交互:具有开始、变化和结束的单个任务。这不是一个完整的流程。点赞帖子是一种微互动;撰写和发布评论是一个流程。这个想法及其结构来自 Dan Saffer 的书《微交互》,该书将每一部分分为四个部分。

微交互的四个部分

Dan Saffer 的框架将微交互分为四个部分。给它们命名很有用,因为大多数错误和最糟糕的运动都存在于四个之一中,而不是整体中。

扳机

启动它的事件。用户启动(点击、悬停、长按、拖动)或系统启动(下载完成、网络错误到达)。图片来源:丹·萨弗。

规则

启动后会发生什么:有效状态、拖动边界或最小值和最大值等约束以及事件顺序。图片来源:丹·萨弗。

反馈

产品如何告诉用户发生了什么:弹簧稳定、颜色变化、图标变形、文本更新。这是大部分动作设计的所在。图片来源:丹·萨弗。

循环和模式

随着时间的推移,交互会发生什么,以及模式如何改变它。相同的切换在暗模式或紧凑布局中可以有不同的行为,而无需改变其逻辑。图片来源:丹·萨弗。

为什么微交互很重要

微交互是指界面如何在没有一段文本的情况下回答用户。它确认已收到操作,表明某些内容仍在工作,或解释刚刚发生的更改。当它们缺失时,同一个产品会感觉更重:用户点击两次,因为没有任何信息告诉他们第一次点击已落地,或者他们在没有任何进展迹象的屏幕上等待。好的东西更多的是被感受到而不是被注意到,这就是重点。

15 个微交互示例

这些按其通信内容进行分组。如果 ExodeUI 提供了匹配的示例,则会给出名称,以便您可以打开并编辑它。

按钮和开关(按下和状态)

1. 按钮按下:指针向下时缩放至约 0.92,释放时弹回(ExodeUI 示例:果冻按钮)。 2. 切换开关:基于 spring 的翻译,提交时颜色变化(Gooey Toggle)。 3. 模式开关:分段控件,可滑动其指示器并改变活动标签(运动开关)。

表单反馈(验证和提交)

4. 无效的输入摇动:一个简短的水平轻推,在没有对话框的情况下显示“检查此字段”(摆动文本输入)。 5. 正在提交:该按钮成为进度指示器,因此用户永远不会失去自己的位置(动画发送按钮)。 6. 成功确认:动作落地时按钮上会发出轻微的庆祝声(火箭发射按钮)。

加载和进度

7. 循环进度:填充至实际值并用弹簧(径向计)固定的环。 8. 电平或活动计:对音频电平(声波)等传入数据进行实时反应的条。

导航

9. 菜单切换:在两种状态之间变形并显示菜单的图标(变形导航)。 10. 停靠放大:光标附近的项目会抬起并放大,然后稳定下来(磁性停靠)。 11.选项卡选择:在选项卡之间滑动而不是闪烁的指示器(液体选项卡栏)。

空状态和成功状态

12. 空状态:一个小插图,一次动画以软化空白屏幕。 13. 奖励揭晓:当达到一个里程碑时,您会满怀期待地打开一份礼物或徽章(惊喜礼盒)。

下拉刷新

14. 拉动刷新:弹性过度滚动,跟踪拖动,然后弹回并在释放时稳定下来。反馈是拉伸,而不是旋转。

触觉式反馈

15. 确认脉冲:元素上的简短刻度和发光反映了移动设备上的触觉点击,因此相同的操作在没有振动电机的设备上感觉相同。

保持良好状态的设计规则

有一些规则可以区分有益的微交互和令人烦恼的微交互。

  • 保持简短:最完整的时间大约为 200-400 毫秒;小元素上较长的运动感觉很慢
  • 在与输入相同的帧中开始;延迟开始破坏了因果关系
  • 保持可中断:如果用户在运动中反转动作,则以速度重定向而不是从零重新开始
  • 尊重更喜欢减少运动:提供静态或交叉淡入淡出后备,仍然传达变化
  • 给它一份工作:如果交互需要多个决策,那么它就是一个流程

如何构建微交互

正确的工具取决于相同的交互必须在多少个平台上运行。

仅CSS

适合简单、独立的情况:悬停升降机、聚焦环和由 :checked 或类更改驱动的切换。过渡和 @keyframes 就足够了,除了样式表之外没有任何东西可以传递。

Framer Motion 或 GSAP(网络)

当动作需要弹簧、手势或编排并且只需在网络上运行时,这是很好的选择。两者都为您提供可中断的弹簧,并且可以由 React 状态驱动。

ExodeUI(来自一个文件的 Web、iOS 和 Android)

当相同的交互必须在 React 应用程序、SwiftUI 应用程序和 Flutter 中表现相同时,请使用此选项。您可以在 .exode 文件中编写一次,然后运行时在每个平台上播放它,因此没有针对每个平台的重写。

生产实施片段

交互组件实现
import { ExodeUICanvas } from 'exodeui';

// Springs, states and timing live in the .exode file (designed in the
// editor). Your code passes inputs in and hears events back.
export function SendButton() {
  return (
    <ExodeUICanvas
      src="/send_button.bexode"
      onTrigger={(name) => console.log('ExodeUI event:', name)}
    />
  );
}

要记住的关键 Principle

  • 微交互是一项小任务,具有触发器、规则、反馈和循环或模式,这四个部分由 Dan Saffer 命名
  • 大多数好的程序在大约 200-400ms 内完成,在与输入相同的帧中启动,并且保持可中断
  • 反馈是有效的:它确认操作并解释发生了什么变化,通常没有任何文字
  • 始终提供首选减少运动后备,在没有运动的情况下携带相同的信息

常见问题解答

相关指南和示例

交互式 UI 只需设计一次,交付同一个文件。

在 ExodeUI 中可视化地构建状态、弹簧物理和逻辑,并在 React、SwiftUI、Flutter 等中播放同一个文件。免费开始。

免费试用