时间分片渲染长列表时样式错乱怎么办?

夏侯绍博 阅读 2

我在用 requestIdleCallback 做长列表的时间分片渲染,数据是分批 append 到 DOM 的,但每次新批次插入后,滚动位置会跳动,而且有些 item 的样式看起来不对。

我检查了 CSS,应该没问题啊,比如下面这段:

.list-item {
  height: 60px;
  padding: 12px;
  border-bottom: 1px solid #eee;
  display: flex;
  align-items: center;
}

是不是因为分片插入导致浏览器 layout 计算出错了?有没有人遇到过类似问题?

我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
书生シ可歆
直接这样,给列表容器设置固定高度和 overflow-y: auto,再在每次插入新批次前保存当前滚动位置,插入后再恢复。像这样:

let scrollTop = listContainer.scrollTop;
// 插入新数据
listContainer.scrollTop = scrollTop;


另外检查下有没有浮动元素没清掉,加个 clearfix 或者 display: flow-root 试试。
点赞
2026-03-30 22:02