✦ UX 交互模式 · 那些有名字的交互细节
一个界面好不好用,常常不取决于功能列表,而取决于一批被反复打磨、各自有名字的交互细节: 点击后界面是立刻响应还是转圈等待;一处数据被改动后用户能否一眼找到; 误删之后能不能反悔;鼠标斜着滑向子菜单时菜单会不会半路消失。 这些模式大多诞生于具体产品的实战(Gmail 的撤销发送、37signals 的 Yellow Fade、Amazon 的 Mega Menu), 后来沉淀为通用词汇。本系列把其中 7 个挑出来,每个都做成可交互触发、并排对照「有 / 没有」的 demo。 正文中文,交互模式 / API 关键词保持英文。
Optimistic UI:先更新界面,再等服务器
点击瞬间就把 UI 更新到成功后的样子,请求放到后台,失败再回滚。代价是偶发的「跳一下」。
Yellow Fade Technique:让刚刚变化的地方自己跳出来
把刚改动的那一行瞬间染成黄色再缓缓淡回,用一次短暂的高亮牵引视线。关键在染色瞬间、淡出缓慢这条不对称缓动。
Snackbar & Undo:用「可以反悔」替代「确定吗」
与其每次删除前弹一个 confirm,不如直接执行、再给一条带撤销的 Snackbar。确认成本从每次操作前挪到极少数想反悔时。
Safe Triangle:斜着滑向子菜单,不要半路关掉它
鼠标斜向移往子菜单时会扫过其他父项。以光标与子菜单靠父列表那条边的两角连成三角容差区,指针还朝三角内去就暂缓切换。
Hover Intent:区分「路过」与「真的想看」
给「打开」加一道判定:指针停留超过阈值才触发,离开带一点关闭延迟。本质是对 enter 事件去抖。
Fitts's Law:目标越大越近,越快越准
费茨定律把指向一个目标的难度量化为 。两个推论:热区可以比视觉大,屏幕四角是无限大的目标。
View Transitions:让同一个元素在两个状态间「长」过去
给前后两个状态里的同一元素标上 view-transition-name,浏览器自动补出位移与缩放的中间帧。同文档版靠 startViewTransition(),跨文档版只需两页同源各写一条 at-rule。
🔗 相关链接
📐 规范 / 文档
-
CSS View Transitions Module Level 1
· W3C / CSSWG
View Transitions 的规范本体:
startViewTransition、view-transition-name与::view-transition-*伪元素树的定义。 - Can I use · View Transitions API (single-document) · caniuse.com 同文档 View Transitions 的实时浏览器支持矩阵。
📎 模式出处 / 背景
- The Yellow Fade Technique · 37signals Yellow Fade 的出处:用一次淡出的黄色高亮把用户视线引到刚变化的地方。
- Breaking down Amazon's mega dropdown · Ben Kamens Safe Triangle 的经典拆解:逆向 Amazon Mega Menu 的「指向意图」算法。
-
View Transition API
· MDN
共享元素转场的原生 API:
startViewTransition与view-transition-name全貌。 -
Cross-document view transitions
· Chrome
跨文档(MPA)转场:
@view-transition { navigation: auto }与::view-transition-*伪元素树的定制。 - Response Times: The 3 Important Limits · Nielsen Norman Group 0.1s / 1s / 10s 三条感知阈值——本系列「缩短反馈间隙」的量化依据。
- Fitts' law as a research and design tool in HCI · Scott MacKenzie 费茨定律在人机交互中的形式化:Shannon 形式的 Index of Difficulty 与吞吐量。