Tooltips 的延迟艺术:先等后免

Tooltips Need a Delay, and Then They Need to Skip It

在开发 FrontPrep 时,我发现 Tooltip 的交互细节极易被忽视。若延迟设为 0,鼠标划过会频繁弹出提示;若固定 200ms 延迟,在密集图标间切换又显得迟钝。我的解决方案是引入“热页”机制:首次悬停需等待 200ms 确认意图,随后开启 300ms 的“热窗口”,在此期间连续悬停其他图标将立即响应,无需等待。这种模式在 Radix 和 Motion 中通过 React 实现,平衡了防误触与流畅性。这不仅是代码优化,更体现了 AI 无法替代的审美判断:工具能构建功能,但只有人类能打磨出精致的产品体验。

AI 可以构建一个功能完备的 Tooltip,但最终由你这位人类来判断它是否值得使用,因为正是这些细节将普通产品与精致产品区分开来。
  1. ProxCoques

    苹果(在杰夫·拉斯金领导下,他也在《人性化的界面》中论述过这一点)早在 1993 年左右就在 SYSTEM 6 中观察并修复了这类交互问题,而几十年后同样的问题却不得不被重新发现、重新修复,这永远让我惊叹不已。

  2. brixie

    这看起来描述的正是 https://emilkowal.ski/ui/you-dont-need-animations 中最后一个示例所用的技巧(而且我觉得,如果你觉得这篇有趣,那整篇文章都值得一读)。

    这是一个如此细微的细节,我本来根本不会注意到(因为我不做动画开发,所以压根没往这方面想),但既然知道了,我现在脑子里就全是这个。

  3. hurrell

    我觉得这可以看作是滞后现象(hysteresis)的一个例子。真有意思!

    https://en.wikipedia.org/wiki/Hysteresis

  4. compiler-guy

    我非常欣赏这种对细节的关注,而世界上这类关注太少了。例如,在 Visual Studio 中,悬停弹出的速度太快,你几乎没法选中任何东西,或者最后点到了弹出框而不是选中单词。

  5. phyzome

    大约 20 年前,我在为网站实现基于悬停的下拉菜单时也遇到过同样的问题。当时只用了大约 10 行 JS 代码和几个全局变量,但全公司只有我一个人能看懂。:-P

    (要是现在的话,我肯定会多加些注释。)

    当然,我们也准备了纯 CSS 菜单作为回退方案,毕竟我们不是野蛮人。

同日更多故事

2026-08-25