好家伙,
1. 什么是虚拟列表
虚拟列表(Virtual List)是一种优化长列表渲染性能的技术。当我们需要展示成千上万条数据时,如果一次性将所有数据渲染到DOM中,会导致页面卡顿甚至崩溃。虚拟列表的核心思想是:只渲染可视区域内的数据,而不是渲染所有数据
2. 使用场景
虚拟列表适用于以下场景:
- 大数据量展示:如聊天记录、新闻列表、商品列表等需要展示大量数据的场景
- 性能敏感:在低性能设备上运行的应用,需要尽可能减少DOM操作
- 实时数据更新:频繁更新的数据列表,如股票行情、实时监控数据等
(我觉得实际场景中,分页会用到更多,用户要看的数据,永远只是一小部分,就那么几条,找不到就用搜索
但总要学学)
3. 虚拟列表原理
一句话:
要看了,再渲染
对,就这么简单,下面,进行分步
- 计算可见项:根据视口位置、每项高度,计算出当前应该显示哪些数据项
- 位置偏移:通过CSS定位,确保可见项在正确的位置显示
- 监听滚动:当用户滚动时,重新计算可见项并更新DOM
这里几个难点:
我怎么知道哪些数据进入了可视区域?
答:监听滚动距离,滚到哪,就从哪里开始
4. 实现虚拟列表
Demo.html代码如下:- <strong><!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>原生JavaScript虚拟列表实现</title>
-
- </head>
- <body>
- <h1 style="text-align: center; margin: 20px 0;">原生JavaScript虚拟列表</h1>
-
-
-
-
-
- </body>
- </html></strong>
复制代码
5.最后总结
为什么滚动到指定位置后会将对应区域数据渲染?
1.监听滚动事件
2.滚动触发数据更新方法
3.根据滚动距离计算当前数据索引
4.根据可视区域计算要渲染数据项
5.渲染数据
6.定位内容
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |