删掉一行,其余行不该瞬移
列表增删最容易做砸的地方不是动画本身,是动画缺失—— 项目瞬间跳位,用户还没看清删了哪条,下一秒已经找不到刚才在看的内容。
共 0 条
工作区里没有实体了
导入一份 CSV,或者从沪深 300 全池里选一个起始集合。
请试这四件事
1. 删中间任意一条。上下两行会平滑滑过去, 不是瞬间跳位。盯着两行之间的缝隙看。
2. 点"按记录数排序"。整列重排,每一行各自从旧位置滑到新位置—— 这也是 FLIP,只是位移不为零。
3. 鼠标横着扫过列表。行不会抖。
做法是左侧线用 transparent 预留 2px,hover 时只改颜色;
如果 hover 才加 border,内容会横移 1–2px,一眼能看出"在抖"。
4. 键盘 Tab 进列表。整行会亮起左边线——但 Tab 不会为每一行多停一次,
只在行内按钮上停。这是 :focus-within 的用途。
为什么不用 auto-animate
评估过 auto-animate(8 KB min+gzip,精简档 装得下),但列表真正需要的
只有"增删时其余项平滑移动"这一件事——为此引入 8 KB 第三方,
要承担协议尽调与供应链风险,不划算。
flip.js 用 FLIP(First-Last-Invert-Play)四步做这件事,
约 40 行,零依赖。顺带保证了 prefers-reduced-motion
下是完全跳过而不是"缩短"——位置直接到最终态。
涨跌色说明
本库用红涨绿跌,与中国 A 股用户习惯一致。 这一点与欧美惯例相反,是刻意的——做反了会被当成数据出错。
对比:错写法 vs 本库写法
❌ 常见写法:长文本直接换行
第一行折成两行,行高就不一样了:一屏能扫到的条目从 8 条掉到 5 条,而且"哪一行对应哪个数字"要重新对。
✅ 本库:单行省略 + title
列表是"扫"的不是"读"的:标题单行截断,完整名称放 title,悬停可看。行高一致,眼睛才能顺着往下扫。