表格渲染几千行卡顿,改成虚拟滚动

原理是只渲染可视区那十几行,滚动时按偏移量动态换内容,DOM 数量恒定所以不卡。

行高必须固定或可预估,否则算不出滚动位置;用绝对定位加 translateY 把行摆到位。

勾选状态要存在数据层,不能靠 DOM 是否渲染来判断,跳转用容器元素的滚动方法。

<div class="viewport" @scroll="onScroll" style="height:600px;overflow:auto">
  <div :style="{height: rows.length * 40 + 'px'}">
    <div v-for="r in visible"
         :style="{transform: `translateY(${r.top}px)`}">{{ r.text }}</div>
  </div>
</div>
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容