滚动时的显隐规则需一致
别名: FAB隐现 · 滚动隐藏FAB · hide on scroll
概念解释
许多产品让 FAB 在向下滚动时收起、向上滚动时再出现,以暂时让出被挡住的内容。这条显隐规则必须在同一产品里保持一致:同一方向、同一速度阈值、同一套动画。规则一旦在不同页面各写各的——有的页永远钉住、有的页一滚就没、有的页要滚过半屏才出来——FAB 就从可预测的主触发变成一只会躲猫猫的控件。
机制
运动系统会把目标位置编进下一次伸手。FAB 的价值之一是位置稳定。滚动隐藏等于让目标在时间上闪烁:人按计划伸向右下角,控件却已收起,手指点到被露出的那一行,造成误触或一次空按。下一次他又不敢伸,先停下来找。不一致比「总是隐藏」更糟,因为无法形成任一稳定策略——既不能依赖「它总在」,也不能依赖「滚的时候它一定让路」。阈值若对速度敏感(慢滚不藏、快滚才藏),同一用户两次相似的滚动会得到相反结果,因果更难学。动画若把 FAB 滑出屏幕又从另一边进,位置映射也会被拆掉。
怎么研究
让人在长列表里交替执行「阅读下一项」和「新建」。比较四种策略:永不隐藏、向下隐藏向上出现且阈值固定、各页不同规则、按速度隐藏。
自变量:显隐策略、阈值是否公开可感知、页面之间是否一致。 因变量:伸手落空次数、误点被露出内容的次数、找到 FAB 的时间、主观可预测性。
实验室短列表很难触发隐藏。必须用远超一屏的内容,并允许自由滚动速度,否则「按速度隐藏」这个条件测不到。
边界
短页、空状态没有滚动,显隐规则不会被激活,应保持 FAB 常在。横向滚动的画廊若把纵向规则套上去,会在左右滑时乱闪。读长文的场景里用户很少需要新建,隐藏可以更积极;收件箱里「写新信」是高频动作,隐藏要更克制。无障碍的减少动效设置打开时,不应再靠滑动动画传达显隐,应变为直接出现/消失或干脆不藏。
怎么落地
- 在全产品选定一种规则(例如:向下超过一个固定距离后收起,向上立即出现),写进组件而不是让各业务页自己做。
- 隐藏时不要改 FAB 的停靠角;回来时还停在同一点。
- 给「减少动效」一条无动画的显隐,或在该设置下保持常显。
- 验证:让人在三个不同列表页里「滚下去再新建」。若有一页找不到 FAB、或伸手点到了刚露出来的行,规则就不一致或不可学。