美文网首页
虚拟化列表

虚拟化列表

作者: 佐伊zero | 来源:发表于2020-07-28 17:39 被阅读0次

虚拟列表使用的场景

虚拟列表是对长列表对一种优化手段,对于一些业务场景,要展示对列表很长,同时不能使用分页对方式,如果一次性把数据全部渲染到页面,会造成浏览器卡死到现象,因为dom渲染时间变长,js和浏览器渲染共用一个线程,用户操作不能够及时响应,造成浏览器假死现象。

实现思路

  1. 滚动容器元素,固定到高度 (scroll-wrap)
  2. 滚动元素, 根据总数据量及其子元素到高度 计算滚动元素总高度(ul)
  3. 可是区域,就是要渲染的滚动元素的子元素(li),根据滚动容器高度,计算要展示的子元素条数, 设置滚动元素中 子元素的 startIndex endIndex
    在滚动的时候,获取滚动容器的 scrollTop, 计算已经隐藏的子元素个数,并设置滚动元素的padding-top, 监听元素的滚动事件,修改startIndex endIndex, 对总数据 进行截取 , 如下:
let count = 1000;
let startIndex = 0;
let endIndex = 11;
let arr = [];
for(let i = 0; i < count; i++) {
  arr.push('<li>' + i + '</li>');
}
let ul = document.getElementById('ul');
ul.style.height = 1000 * 50 + 'px';
let visblearr = arr.slice(startIndex, endIndex);
ul.innerHTML = visblearr.join(' ');

function render(wrap) {
    const scrollTop = wrap.scrollTop
    ul.innerHTML = '';
    let topIndex = Math.floor(scrollTop / 50);
    ul.style.paddingTop = topIndex * 50 + 'px';
    startIndex = topIndex;
    endIndex = startIndex + 11;
    let visblearr = arr.slice(startIndex, endIndex);
    ul.innerHTML = visblearr.join(' ');
}

document.getElementsByClassName('scroll-wrap')[0].addEventListener('scroll', function (e) {
  render(this)
})
<style>
    .scroll-wrap {
      height: 500px;
      overflow: auto;
      border: 1px solid #000;
    }
    ul {
      margin: 0;
      box-sizing: border-box;
    }
    li {
        height: 50px;
      }
  </style>

<div class='scroll-wrap'>
    <ul id='ul'></ul>
  </div>

以上就是一个虚拟列表的简单实现。

相关文章

  • 虚拟化列表

    虚拟列表使用的场景 虚拟列表是对长列表对一种优化手段,对于一些业务场景,要展示对列表很长,同时不能使用分页对方式,...

  • kvm虚拟化

    KVM 虚拟化技术 CPU虚拟化技术 内存虚拟化技术 IO虚拟化技术 网络IO虚拟化技术 磁盘IO虚拟化技术 虚拟...

  • 虚拟化技术

    虚拟化技术 分类 按虚拟对象 操作系统虚拟化 平台虚拟化 按方案 软件虚拟化 硬件虚拟化 虚拟机管理器 虚拟化技术...

  • 虚拟列表

    import React, { Component } from "react";import logo from...

  • useVirtualList

    简介 1 .虚拟化列表能力的hook,用于展示海量数据渲染时首屏渲染缓慢和卡顿的问题 扩展 1 .和无限列表相结合...

  • 虚拟化原理

    虚拟化应用:弹性计算处理能力可弹性的服务器。 CPU虚拟化技术 内存虚拟化技术 IO虚拟化技术 开源虚拟化项目 X...

  • 虚拟化笔记

    1.虚拟化:计算机资源的抽象和模拟 2.平台虚拟化实现方式 3.cpu虚拟化 4.内存虚拟化 5.IO虚拟化

  • Docker概念理解

    容器技术 简单介绍 容器技术又称为容器虚拟化 首先是一种虚拟化技术 虚拟化技术包括硬件虚拟化 半虚拟化 操作系统虚...

  • 第三章 大数据平台的架构体系

    大数据基础设施 1.虚拟化服务器虚拟化,存储虚拟化,网络虚拟化,桌面虚拟化2.云计算私有云,社区云,公共云,混合云...

  • 企业部署虚拟化的七大好处

    编者按:目前虚拟化技术已经突破虚拟内存和虚拟服务器两大空间,延伸到网络虚拟化、微处理器虚拟化、文件虚拟化和存储虚拟...

网友评论

      本文标题:虚拟化列表

      本文链接:https://www.haomeiwen.com/subject/evgfrktx.html