虚拟列表的实现

html表格制作虚拟长列表+冻结列 <template> <div class="content"> <el-button type="primary" class="button1" @click="click1">搜索</el-button> <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane label="空运中心" name="first"&gt... 阅读详情

如果有不足可以补充,虚拟列表是只展示窗口的数据,避免请求过多数据造成卡顿,以下是简单实现虚拟列表的方式

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .scroll_outer {
      height: 500px;
      overflow: auto;
      border: 1px black solid
    }
  </style>
</head>

<body>
  <div class="scroll_outer">
    <div class="inner_content"></div>
  </div>

  <script>
    const scrollDiv = document.querySelector('.scroll_outer');

    // 滚动容器的高度
    const height = scrollDiv.clientHeight
    // 设置每一项的高度
    const itemHeight = 60

    // 生成数据
    const initData = () => {
      return new Array(100).fill(0).map((_, index) => {
        return {
          content: `我是${index}`,
          color: index % 2 == 0 ? 'red' : 'blue',
          height: itemHeight
        }
      })
    }

    const data = initData()

    // 所有高度
    const allHeight = data.length * itemHeight
    const handleScroll = () => {
      const scrollTop = scrollDiv.scrollTop
      //展示窗口===== 开始数据索引
      const startIndex = Math.floor(scrollTop / itemHeight)
      //展示窗口===== 结束数据索引
      const endIndex = Math.ceil(height / itemHeight) + startIndex

      // 展示在窗口的数据
      const showData = data.slice(startIndex, endIndex + 1)

      const innerContent = document.querySelector('.inner_content')

      //  把之前的数据情空
      innerContent.innerHTML = ''

      // 展示数据
      showData.forEach((item, index) => {
        const itemDiv = document.createElement('div')
        itemDiv.innerHTML = item.content
        itemDiv.setAttribute('style', `height: ${item.height}px;background: ${item.color}`)
        innerContent.appendChild(itemDiv)
      })

      // 加上padding====保证所有数据出现在视口内 
      const paddingTOp = startIndex * itemHeight
      const paddingBottom = (data.length - endIndex) * itemHeight

      innerContent.setAttribute('style', `padding-top: ${paddingTOp}px;padding-bottom: ${paddingBottom}px`)
    }

    handleScroll()

    // 监听滚动事件,不断更新展示数据
    scrollDiv.addEventListener('scroll', handleScroll)


  </script>
</body>

</html>

数据量大如何优化渲染、虚拟列表技术、js虚拟列表、Vue Virtual Scroller 实现虚拟滚动列表、react-virtualized 库实现的虚拟列表 当处理大量数据时,页面可能会出现性能问题。为了优化性能,可以考虑使用虚拟列表和数据缓存机制。 虚拟列表是一种UI优化技术,它只渲染可见区域的数据项,而不是一次性渲染全部数据。这样可以减少DOM元素数量,提高页面性能和用户体验。 阅读详情

相关推荐

虚拟列表+无限滚动的实现

本文讲述如何实现虚拟列表、无限滚动

m0_65519288的博客 1285

前端大数据量渲染——虚拟列表

前端大数据量渲染处理方式,虚拟列表不会一次性将所有数据都渲染到页面中,而是只渲染可视区域的内容,当鼠标滚动时,再渲染下一波内容,即虚拟列表中的dom元素始终是指定数目的。当从后端一次性取到成千条数据进行页面渲染,再对页面进行操作很可能导致页面崩溃,这时就可以用虚拟列表的方法,进行页面的渲染。

sxp19980829的博客 1379

使用 Vue 实现一个虚拟列表的方法

主要介绍了使用 Vue 实现一个虚拟列表的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

虚拟列表-解决前端快速绘制上万条数据问题

虚拟列表即只加载绘制界面可视区域数据,对溢出部分的区域进行数据清除、不绘制处理,该方式能大大提高渲染的性能。

qq_44626187的博客 690

VMvare 桥接模式无法联网、没有未桥接的主机网络适配器,无法将网络更改为桥接状态。

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!战项目源码讲义》点击传送门即可获取!**

q16974058的博客 4332

[kriging](一)网上下载的kriging克里金的C++程序的初步调试

笔者在网上下载了一份克里金的C++程序,水平有限,正在逐步地调试中。 初步 克里金法现在在许多软件都已经有集成了,据笔者所知: arcgis : 看过有的arcgis培训视频里面简略介绍了里面的插值方法,有克里金。 surfer :笔者用过这个,效果很好。 gocad :听说有 landmark &jason :研究生时候用的专业的石油物探软件,里面有克里金法,万恶的开始。 pykrig...

FOREST优快云 5612

html虚拟列表,vue实现虚拟列表功能的代码

当数据量较大(此处设定为10w),而且要用列表的形式展现给用户,如果我们不做处理的话,在浏览器中渲染10w dom节点,是极其耗费时间的,那我的Macbook air举例,10w条数据渲染出来到能看到页面,需要13秒多(实际应该是10秒左右),如果是用户的话肯定是不会等一个网页十几秒的我们可以用虚拟列表解决这个问题一步步来首先看一下效果这是data中的数据data() {return {list:...

weixin_36114355的博客 452

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 948

三种虚拟列表原理与实现

前言工作中一直有接触大量数据渲染的业务,使用react-window多之又多,所以对虚拟列表有了些浅显的理解。今天,我们就照着react-window的使用方式来实现三种虚拟列表。元素固定高度的虚拟列表元素不定高度的虚拟列表元素动态高度的虚拟列表虚拟列表核心原理 我们先来看一下整个虚拟列表元素的表现。动画.gif看右边的元素个数,会发现起初只有6个,之后无论怎么滚动,他都保持着8个元素,由此我们可...

奇舞周刊 4969

一文读懂医疗大模型测评基准

面对市场上浩若星海的大模型,医院管理者如何采购适合自身场景的解决方案?如何选取好的模型作为基础进行课题研究?都是医院需要特别重视的问题。评测基准则benchmark是这些问题的重要解法,国内北京、上海、浙江已然开展了相关的标准化工作。

dz102的博客 1844

SPV1050低功耗微功率太阳能充电管理模块原理图设计,已量产

在物联网应用快速普及的今天,户外低功耗传感器(如土壤温湿度、环境光照、无线节点等)的供电始终是行业痛点 —— 传统锂电池不仅需要定期更换,维护成本高,还难以满足 “终身免维护” 的场景需求。为此,我们设计了一款专为 1V~3V 低电压小型太阳能板优化的微功率太阳能电源管理模块,结合 USB 备用充电路径,实现了低功耗传感器的长期自主供电。

不脱发的程序猿 449

虚拟列表的实现原理

在列表数据的展示优化一文中,提到了对于列表形态的数据展示的按需渲染。这种方式是指根据容器元素的高度以及列表项元素的高度来显示长列表数据中的某一个部分,而不是去完整地渲染长列表,以提高无限滚动的性能。而按需显示方案的实现就是本文标题中说的虚拟列表。 虚拟列表的实现有多种方案,本文以react-virtual-list组件为基础进行分析。原文链接:https://github.com/dwqs/blog/issues/70 什么是虚拟列表? 在正文之前,先对虚拟列表做个简单的定义。 根据...

_ 5005

把 SM30 用顺:从表设计到权限与传输,全面掌握 SAP Table Maintenance Generator

摘要 SAP的Table Maintenance Generator(TMG)是为配置表维护需求设计的经典工具,能够生成标准化的维护对话框(SM30)。它支持单表、维护视图(多表关联)和视图簇(导航式维护)三种维护对象类型。使用TMG前需注意三个关键设置:1)表维护权限选项;2)交付类(决定数据传输行为);3)客户端字段配置。通过SE54/SE11生成维护对话框时,需选择维护类型(一步/两步)和记录例程(控制传输)。TMG生成的对象包含函数组、屏幕和处理模块,但部分标准框架不可修改。实际应用中,可通过参数事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 176

前端虚拟列表实现

虚拟列表(Virtual List)是一种用于优化长列表性能的技术解决方案。其核心思想是:只渲染可视区域的列表项,而不是渲染整个列表的所有项。这种技术特别适用于需要展示大量数据的场景,可以显著提升页面性能和用户体验。

疯狂假前端的博客 1775

AUTOSAR进阶图解==>AUTOSAR_SWS_CANNetworkManagement

本文介绍了AUTOSAR架构中的CAN网络管理(CanNm)模块,主要内容包括: 模块概述:CanNm是协调CAN网络节点状态转换的基础组件,采用去中心化设计,通过周期性发送网络管理PDU保持网络活跃状态,支持网络唤醒、睡眠和部分网络功能。 架构设计:CanNm位于AUTOSAR中间层,连接上层通信管理器(ComM)和底层CAN接口(CanIf),包含状态管理、PDU处理和定时器管理等子组件。 状态机设计:定义了三种主要模式(总线睡眠、准备睡眠和网络模式)及其转换逻辑,网络模式又包含重复消息、正常操作和准备

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2041

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

AI人人懂 2193

面试(进阶) —虚拟列表在什么场景使用,如何实现?

面试(进阶) —虚拟列表在什么场景使用,如何实现?

我是 二川兄,对Web开发、GIS开发、3D模型、机器学习、面试技巧等方面都有一些涉猎~ 欢迎您加入技术交流圈!你可以在我的文章末尾找到我~ 4873

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vue实现虚拟列表

vue实现虚拟列表

喜大普奔 4287

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

js 实现虚拟列表

js 实现虚拟列表

weixin_37795155的博客 3028

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

vue中实现虚拟列表

Vue中实现虚拟列表

weixin_38881784的博客 2668

虚拟列表如何实现

虚拟列表通过计算可见区域内的项并只渲染这些项,能有效提升渲染性能,尤其在数据量大的情况下。Vue 3 中可以通过ref和v-for动态渲染可见的列表项,并通过滚动事件计算和更新显示区域的内容。

subsistent的博客 574
上一篇: 实现图片的异步加载
下一篇: 前端的拖拽序列(drag)
小菜鱼!
博客等级 码龄5年 52粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值