骨架结构与实际内容不符会造成跳变
别名: 骨架食言 · 等待结束跳变 · skeleton-to-content jump
概念解释
选用骨架,就是在等待阶段签发一张空间支票:这些槽位将按这个相对位置、这组数量被真内容兑付。载荷到达时若行数、块高、有无边栏对不上,支票被拒,画面在等待结束的那一帧发生跳变(layout jump)。跳变不是骨架画得丑,是这次选型把一份会作废的地图交给了正在等的人。转圈从不签发这张支票,所以它没有这种破产方式。
机制
骨架把等待从「空」改成「预占」。预占一旦被看见,注意和指向都会按预占来安排:眼睛停在将来的标题带,拇指悬在将来的第一颗按钮上。内容若落在另一套几何里,安排全部作废,人还要在到达瞬间再付一次定向税,外加「刚才那张图是假的」的修正。等待本想用预演省下的,在结束帧一次性吐回去,还多出一次失信。
错配通常不是实现随机出错,而是选型时把理想态当成可预知结构:总有封面、总是三行摘要、总有右侧栏。真实载荷缺图、摘要一行、权限拆掉整栏,预占就比实物大一圈或小一圈。骨架按平均态画,极端项仍会跳;按最大态画,短内容会在到达时塌出一块空白,同样是跳。问题在承诺的几何有没有被这次等待兑付,不在灰块圆不圆。
边界
轻微的字号差和一张可有可无的小图标,跳变可以小到不被当成食言,尤其当主区块的锚点(头、第一行、主按钮)仍对得上。真正伤的是改变滚动位置、把已出现的真内容顶出视口、或把指针下的命中目标换成另一控件。分块到达造成的后到挤动是另一组问题:那是陆续兑现多张支票,不是一张骨架支票在结束帧被拒。结构本来就不可预知时,跳变是选错等待语言的症状,应退回不确定指示,而不是把骨架画得更「弹性」来掩盖。动画把跳变抹成 200 毫秒的位移,人仍然失去已经瞄好的坐标,只是破产看起来比较滑。
怎么落地
- 把骨架当成契约:只画这次等待能够兑付的槽。会随数据出现或消失的模块,不要为了「看起来像完整页」画进去。
- 宁可少承诺:固定头 + 不定长列表用「头 + 一条示意行」,不要预画十行再在到达时删七行。
- 结构可能分叉(有无边栏、有无空态)时,等到分叉揭晓再选骨架,或在揭晓前改用不确定指示。
- 验证:把骨架帧和内容到达的第一帧叠在一起。主区块锚点错位、已可见按钮被顶走,或行数从三变成十几,就是这张支票被拒了——回退选型,而不是只调圆角。