F2.09.3masonry positions are unstable设计
位置不稳定导致无法回到原处
别名: 位置漂移 · unstable masonry · 找不到刚才那张
概念解释
看见一件红外套在第三列中部,滑走再回来,它可能已经到了第一列底部,或被新插入的图顶没了。瀑布流里每张图的 (x, y) 是它前面所有项的高度加上当前列数的函数。列数随断点变、顶部插入新项、窗口拉宽,坐标全改。空间记忆失效,「回到刚才那儿」只能靠搜索。
这和第一眼读乱了不同:即使你接受乱序浏览,回头仍需要一个还在的坐标。
机制
最短列插入让位置依赖前缀。前缀多一张,后面全部可能换列。宽度一变,列数从 2 变 3,整个函数重算。无限滚动把前缀变得更长、更常变(刷新、实时插入)。人用来再认位置的是粗略的「大概第三列半腰」,这个描述在函数一变就作废。
有行列网格里,第 n 项大约在第 n/k 行,宽度变了还能估。瀑布流没有行索引可估。
边界
一次性发现流、不指望回头的娱乐信息,不稳定可以被接受,用「保存」代替空间记忆。已保存的收藏若仍用瀑布流且可插入,收藏页同样找不到。固定一列的时间线(纯垂直流)位置只沿 y 变,比多列稳,但仍会被顶部插入打乱——那是插入策略,不是瀑布流独有,但瀑布流会把 y 的错位再乘上换列。
需要「继续逛」的电商、图库,不稳定会直接转成找不回、重复看见、买不到刚才那件。
怎么落地
- 对必须回头的表面,放弃瀑布流或在会话内冻结列数和前缀(新项只追加在末尾,不插顶)。
- 提供非空间的再入:搜索、筛选、收藏、最近看过。不要指望用户记得第三列。
- 验证:记下某一项相对视口的位置,做三件事——把窗口从两列宽拉到三列、在顶部插入一项、离开再返回。每次尝试不靠搜索指回那一项。三次里有一次指错,位置就不稳。若产品声称「浏览可恢复」,三次都必须指对,否则改布局或加「最近看过」。