列表变化,不必跳一下

通过排序前后对比,持续认出同一个列表项目。

互动实验在真实界面中看
正在准备互动实验…
02 — COMPARE / 看见方法的作用

同一个任务,换一种处理方式。

先看两种实现,再找出让交互更清楚的那条规则。

未使用 Skills · 基础实现基础版本
正在准备互动实验…

顺序变化后立即显示新位置。

使用 Skills · 应用交互规则规则应用
正在准备互动实验…

项目从当前位置过渡到新位置。

01 / 改了什么

稳定 ID、真实布局更新与位置差补偿。

02 / 为什么这样改

稳定身份比炫目的位移更重要。

03 / 什么时候不需要

虚拟化长列表、大批更新和用户正在阅读时,需要额外评估。

教学示意,非 AI 生成实测。两侧的任务、内容和输入条件一致;只比较这里说明的规则。Skills 不保证每次生成相同结果。

03 — APPLY / 放进真实项目

稳定身份比炫目的位移更重要。

01每个项目有稳定 ID,不用数组索引冒充身份。

02先更新真实 DOM 顺序,再用旧新位置差做视觉过渡。

03中途重排先读取当前视觉位置,避免跳回上个终点。

适合用在任务排序收藏列表少量项目增删
把这段需求,交给你的 AI

为三项任务列表增加重排过渡。使用稳定 ID;先测当前视觉位置再更新 DOM 顺序,用 transform 让项目到达新位置。连续重排可中断,减少动态效果时直接更新顺序。

实现代码与机制 +

以下片段解释核心机制,需要与状态、语义和清理逻辑一起使用。页面演示由本地受控组件实现。

// FLIP 的核心:真实布局先更新,视觉上补偿位置差。
const deltaY = previousTop - nextTop;
element.animate([
  { transform: "translateY(" + deltaY + "px)" },
  { transform: "translateY(0)" }
], { duration: 260, easing: "cubic-bezier(.2,.8,.2,1)" });
原理、来源与适用边界 +

虚拟化长列表、大批更新和用户正在阅读时,需要额外评估。

减少动态效果时去掉装饰位移、回弹和自动连续播放,保留功能、状态文字与手动查看步骤。

阅读对应的中文方法笔记 ↗

本案例是独立教学实现。前后对比说明具体规则,不是对某个模型的效果承诺。

停一下,想一想

为什么不能随意用数组索引作 key?

进度仅保存在当前浏览器
看看其他学习路径