前端虚拟滚动列表实现代码

虚拟滚动列表是一种性能优化技术,用于只渲染可视区域内的元素,而不是渲染列表中所有的元素。这在处理大量数据时非常有用,可以显著提高应用的性能和响应速度。以下是使用JavaScript和CSS实现虚拟滚动列表的一个基本示例。

HTML

 
<div id="virtual-list" class="virtual-list"> <!-- 列表项将被动态插入 --> </div>

CSS

 
.virtual-list { width: 300px; height: 500px; overflow-y: scroll; border: 1px solid #ccc; } .list-item { height: 50px; padding: 10px; box-sizing: border-box; border-bottom: 1px solid #eee; }

JavaScript

 
class VirtualList { constructor(options) { this.container = document.querySelector(options.container); this.itemHeight = options.itemHeight; this.totalItems = options.totalItems; this.visibleItems = Math.ceil(this.container.clientHeight / this.itemHeight); this.items = []; } render() { this.container.innerHTML = ''; this.calculateItemsToRender(); this.items.forEach(item => { const element = document.createElement('div'); element.className = 'list-item'; element.textContent = `Item ${item + 1}`; this.container.appendChild(element); }); } calculateItemsToRender() { const start = this.getScrollTopIndex(); const end = start + this.visibleItems; this.items = Array.from({ length: this.visibleItems }, (_, i) => start + i); } getScrollTopIndex() { return Math.floor(this.container.scrollTop / this.itemHeight); } onScroll() { this.calculateItemsToRender(); this.render(); } } // 初始化虚拟滚动列表 const virtualList = new VirtualList({ container: '#virtual-list', itemHeight: 50, totalItems: 10000 }); virtualList.render(); // 监听滚动事件 virtualList.container.addEventListener('scroll', () => { virtualList.onScroll(); });

这个示例创建了一个虚拟滚动列表,其中包含10000个项目,但只有当前可视区域内的项目会被渲染。VirtualList类负责管理列表的渲染和更新。当用户滚动列表时,onScroll方法会被调用,重新计算并渲染当前可视区域内的项目。

请注意,这只是一个基本示例,实际应用中可能需要更多的功能和优化,例如处理动态数据、优化内存使用、支持不同尺寸的项目等。

posted on   WEB前端1989  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
主机帮 百度云加速-百度云防护-百度高防CDN-京东云星盾 站长论坛 网站防护-CDN加速-网站安全-站长论坛
点击右上角即可分享
微信分享提示