这个效果是怎么做出来的
交错入场的骨架是两件事的组合:IntersectionObserver 负责在列表滚进视口时触发一次入场,CSS 负责每个子项的动画。每个子项用同一个 keyframes——从 translateY(24px) 加透明度 0 过渡到原位和 1——区别只在 animation-delay:第 i 项延迟 i 乘以 70 毫秒,于是整列像瀑布一样依次荡下来。缓动曲线要带一点弹簧味(比如 cubic-bezier(0.34, 1.2, 0.64, 1)),每项到位时轻微越过再回正,节奏感就出来了。
有一个细节决定成败:延迟只在入场时生效,入场完成后必须把动画状态清掉(animation-fill-mode 或移除类),否则后续的 hover 之类交互动画会被拖住的 animation 干扰。重播按钮的实现是经典三步:移除入场类、强制读取一次 offsetWidth 触发回流、再重新加上类,动画就会从头再放一遍。
怎么用这条提示词
适合任何列表首次露出的场景:信息流、搜索结果、设置项。发给 AI 时说明你的列表是怎么渲染的(静态 HTML 还是框架循环),它会决定把延迟写在行内 style 还是 CSS 变量上。子项数量很多时(超过 20 个),让 AI 加一个延迟上限,比如最多叠到第 8 项,不然最后一项要等一秒多才出现。
想效果更好?试试这些
错峰间隔 50 到 90 毫秒之间最自然,快于 40 毫秒看不出交错,慢于 120 毫秒会让人等到着急。滑入距离 20 到 30px 刚好,太远像飞入。长列表建议只给视口内的前几项做交错,滚动加载的新批次各自重新交错,节奏感比全场排一次更持久。动画期间列表容器加 overflow 锁定,避免入场位移撑出滚动条闪一下。