当前位置: 首页 > news >正文

封装一个 虚拟列表渲染 组件

组件代码

<template><div ref="list" class="infinite-list-container" @scroll="scrollEvent($event)"><div class="infinite-list-phantom" :style="{ height: listHeight + 'px' }"></div><div class="infinite-list" :style="{ transform: getTransform }"><div ref="items"class="infinite-list-item" v-for="item in visibleData" :key="item.id":style="{ height: itemSize + 'px',lineHeight: itemSize + 'px' }">{{ item.value }}</div></div></div>
</template><script>
export default {name:'VirtualList',props: {//所有列表数据listData:{type:Array,default:()=>[]},//每项高度itemSize: {type: Number,default:200}},computed:{//列表总高度listHeight(){return this.listData.length * this.itemSize;},//可显示的列表项数visibleCount(){return Math.ceil(this.screenHeight / this.itemSize)},//偏移量对应的stylegetTransform(){return `translate3d(0,${this.startOffset}px,0)`;},//获取真实显示列表数据visibleData(){return this.listData.slice(this.start, Math.min(this.end,this.listData.length));}},mounted() {this.screenHeight = this.$el.clientHeight;this.start = 0;this.end = this.start + this.visibleCount;},data() {return {//可视区域高度screenHeight:0,//偏移量startOffset:0,//起始索引start:0,//结束索引end:null,};},methods: {scrollEvent() {//当前滚动位置let scrollTop = this.$refs.list.scrollTop;//此时的开始索引this.start = Math.floor(scrollTop / this.itemSize);//此时的结束索引this.end = this.start + this.visibleCount;//此时的偏移量this.startOffset = scrollTop - (scrollTop % this.itemSize);}}
};
</script><style scoped>
.infinite-list-container {height: 100%;overflow: auto;position: relative;-webkit-overflow-scrolling: touch;
}.infinite-list-phantom {position: absolute;left: 0;top: 0;right: 0;z-index: -1;
}.infinite-list {left: 0;right: 0;top: 0;position: absolute;text-align: center;
}.infinite-list-item {padding: 10px;color: #555;box-sizing: border-box;border-bottom: 1px solid #999;
}
</style>

使用:

<VirtualList :listData="data" :itemSize="100"/>

相关文章:

封装一个 虚拟列表渲染 组件

组件代码 <template><div ref"list" class"infinite-list-container" scroll"scrollEvent($event)"><div class"infinite-list-phantom" :style"{ height: listHeight px }"></div><div class…...

Spring中@Bean标注的方法是如何创建对象呢?

Bean 标注的方法如何创建对象呢&#xff1f; 参考文章&#xff1a;https://blog.csdn.net/qq_35971258/article/details/128241353 下边只讲一下 Bean 注解标注的方法&#xff0c;是如何去进行创建 bean&#xff0c;以及流程是怎样的&#xff0c;如果需要看源码具体执行流程&a…...

伦敦金股票代码是什么?

伦敦金是跟踪实时的现货黄金价格走势的差价合约交易&#xff0c;它的代码一般是LLG、GOLD&#xff0c;但也有一些货币交易平台会显示为XAU。伦敦金不是股票交易&#xff0c;因此没有四位数或六位数的股票代码&#xff0c;但伦敦金交易品种单一&#xff0c;投资者不用在数千支股…...

【环境装配】Anaconda在启动时闪现黑框,闪几次后仍能正常使用,解决黑框问题

anaconda闪黑框这个问题遇到好久了&#xff0c;也没找到相关资料来解决&#xff0c;今天做了两个更新&#xff0c;刚好可以不闪黑框了&#xff0c;记录一下。 更新anaconda 在界面右上角的位置点击更新&#xff0c;更新完后再打开时只闪现两个黑框了&#xff0c;之前好像有五…...

【Python】Python爬虫使用代理IP的实现

前言 在爬虫的过程中&#xff0c;我们经常会遇到需要使用代理IP的情况。比如&#xff0c;针对目标网站的反爬机制&#xff0c;需要通过使用代理IP来规避风险。因此&#xff0c;本文主要介绍如何在Python爬虫中使用代理IP。 一、代理IP的作用 代理IP&#xff0c;顾名思义&…...

盘点U-Mail邮件系统安全设计

在当今社会&#xff0c;电子邮件已经成企业沟通和信息传递重要的手段之一&#xff0c;是企业办公中不可或缺的一部分。但是由于企业邮件服务器端口对外开放、企业邮件安全管理能力不足、邮件内容敏感性高等特点&#xff0c;电子邮件也成为了网络攻击者进行网络钓鱼、恶意软件传…...

Webpack--动态 import 原理及源码分析

前言 在平时的开发中&#xff0c;我们经常使用 import()实现代码分割和懒加载。在低版本的浏览器中并不支持动态 import()&#xff0c;那 webpack 是如何实现 import() polyfill 的&#xff1f; 原理分析 我们先来看看下面的 demo function component() {const btn docume…...

创新无处不在的便利体验——基于智能视频和语音技术的安防监控系统EasyCVR

随着科技的迅猛发展&#xff0c;基于智能视频和语音技术的EasyCVR智能安防监控系统正以惊人的速度改变我们的生活。EasyCVR通过结合先进的视频分析、人工智能和大数据技术&#xff0c;为用户提供了更加智能、便利的安全保护体验&#xff0c;大大提升了安全性和便利性。本文将介…...

强化IP地址管理措施:确保网络安全与高效性

IP地址管理是网络安全和性能管理的关键组成部分。有效的IP地址管理可以帮助企业确保网络的可用性、安全性和高效性。本文将介绍一些强化IP地址管理的关键措施&#xff0c;以帮助企业提高其网络的安全性和效率。 1. IP地址规划 良好的IP地址规划是强化IP地址管理的基础。它涉及…...

Power Automate-创建审批流

提前在SharePoint上创建好对应的表 在创建中选择自动化云端流 选择当创建项时触发 选择站点和列表&#xff0c;再点击添加新步骤 搜索审批&#xff0c;点击进入 操作里的选项区别&#xff1a; 1&#xff09;创建审批&#xff1a;创建一个审批任务 2&#xff09;等待审批&…...

商越科技:渗透测试保障平台安全,推动线上采购高效运转

商越科技是数字化采购解决方案提供商&#xff0c;在同赛道企业中始终保持前列。商越科技通过自主研发的智能采购中台、SaaS应用及运营服务等为企业搭建专属的互联网采购平台&#xff0c;帮助企业实现采购数字化以及智能化转型&#xff0c;提高工作效率、降低采购成本。 打造数字…...

Java10新增特性

特性列表 Java 10是Java的一个主要版本更新&#xff0c;引入了许多新功能和改进。以下是一些Java 10的新增特性&#xff1a; 局部变量类型推断&#xff1a;Java 10引入了局部变量类型推断&#xff0c;允许开发者使用关键字"var"来声明局部变量&#xff0c;而无需指定…...

Hive 知识点八股文记录 ——(一)特性

Hive通俗的特性 结构化数据文件变为数据库表sql查询功能sql语句转化为MR运行建立在hadoop的数据仓库基础架构使用hadoop的HDFS存储文件实时性较差&#xff08;应用于海量数据&#xff09;存储、计算能力容易拓展&#xff08;源于Hadoop&#xff09; 支持这些特性的架构 CLI&…...

如何使用PHP替换回车为br

1、使用PHP内置的nl2br()函数 nl2br()函数是PHP内置的函数&#xff0c;可以将任何字符串中的回车符&#xff08;\n&#xff09;替换为HTML中的换行符&#xff08;br&#xff09;。具体使用方法如下&#xff1a; $string "这里有一个\n换行符"; $string nl2br($str…...

Unity 场景优化策略

Unity 场景优化策略 GPU instancing 使用GPU Instancing可以将多个网格相同、材质相同、材质属性可以不同的物体合并为一个批次&#xff0c;从而减少Draw Calls的次数。这可以提高性能和渲染效率。 GPU instancing可用于绘制在场景中多次出现的几何体&#xff0c;例如树木或…...

Wireshark在Windows上安装后报错怎么办?

Wireshark是一个非常好的网络抓包分析工具&#xff0c;有了他可以轻松解决网络问题&#xff0c;大家有没有使用过呢&#xff1f; 在生产环境使用过的朋友是否各种windows系统安装时遇到各种问题&#xff1f;比如说缺少某某文件&#xff0c;我们经常的做法是找个DLL放在System32…...

【Proteus仿真】【51单片机】水质监测报警系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用按键、LED、蜂鸣器、LCD1602、PCF8591 ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。 主要功能&#xff1a; 系统运行后&…...

TensorFlow2.0教程3-CNN

` 文章目录 基础CNN网络读取数据卷积层池化层全连接层模型配置模型训练CNN变体网络简单的深度网络添加了其它功能层的深度卷积NIN网络文本卷积基础CNN网络 读取数据 import numpy as np import tensorflow as tf import tensorflow.keras as keras import tensorflow.keras.la…...

flink1.18.0 sql-client报错

报错 Flink SQL> > > select * from t1; [ERROR] Could not execute SQL statement. Reason: java.lang.ClassNotFoundException: org.apache.kafka.clients.consumer.OffsetResetStrategy 解决 注意 一定要重启flink服务 否则还会报错: Flink SQL> select *…...

基于ssm的校园快递物流管理系统(java+jsp+ssm+javabean+mysql+tomcat)

博主24h在线&#xff0c;想要源码文档部署视频直接私聊&#xff0c;9.9拿走&#xff01; 基于javawebmysql的ssm校园快递物流管理系统(javajspssmjavabeanmysqltomcat) 运行环境&#xff1a; Java≥8、MySQL≥5.7、Tomcat≥8 开发工具&#xff1a; eclipse/idea/myeclipse/s…...

单入射方向光波导耦合光栅的优化

摘要 将光耦合到光波导在现代光学的各种应用中具有重要意义。在VirtualLab Fusion中&#xff0c;使用傅里叶模态法(FMM&#xff0c;也称为RCWA)和参数优化工具&#xff0c;可以优化真实的光栅几何形状&#xff0c;以实现特定衍射级次的最佳耦合效率。本例展示了针对特定入射方…...

如何备份和恢复中兴手机?4 种可靠方法

无论你使用的是中兴手机还是其他安卓设备&#xff0c;都要记得经常备份。备份能帮你避免不必要的麻烦&#xff0c;因为你可以轻松恢复丢失的数据&#xff0c;而不用直接从手机里尝试恢复。 因此&#xff0c;我们都要记得时常备份移动设备&#xff0c;你永远不知道何时会意外删除…...

登录无法连接sqlserver数据库手顺

这个 Cant open lib ODBC Driver 17 for SQL Server : file not found 错误&#xff0c;是系统提示找不到 SQL Server 的 ODBC 驱动&#xff0c;通常因为驱动未安装、未正确配置或缺少依赖。 安装驱动、创建数据源&#xff08;DSN&#xff09;并测试连接&#xff0c;可以按以下…...

FPGA全数字CDR设计:从过采样原理到低速SerDes应用实践

1. 什么是全数字CDR&#xff1f;为什么FPGA实现如此重要 时钟数据恢复&#xff08;CDR&#xff09;技术是现代数字通信系统中不可或缺的关键环节。想象一下&#xff0c;当你和朋友用对讲机通话时&#xff0c;如果双方说话节奏不一致&#xff0c;就会导致听不清或漏掉重要信息。…...

机器学习评估指标详解:从原理到实战应用

1. 机器学习评估指标的重要性在机器学习项目中&#xff0c;选择合适的评估指标就像医生选择正确的诊断工具一样关键。这些指标不仅决定了我们如何衡量模型的性能&#xff0c;更直接影响我们对模型改进方向的判断。我在实际项目中见过太多因为指标选择不当而导致项目偏离方向的案…...

FF14副本动画跳过插件终极指南:大幅提升游戏效率

FF14副本动画跳过插件终极指南&#xff1a;大幅提升游戏效率 【免费下载链接】FFXIV_ACT_CutsceneSkip 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_ACT_CutsceneSkip FFXIV_ACT_CutsceneSkip 是一款专为《最终幻想XIV》中国服务器玩家设计的强大插件&#xff…...

告别手动标注!用CloudCompare的CANUPO插件,5分钟搞定点云自动分类(附最新.prm文件获取指南)

5分钟解锁点云智能分类&#xff1a;CloudCompare CANUPO插件实战指南 激光雷达点云数据分类一直是三维建模领域的痛点——传统手动标注方式不仅耗时费力&#xff0c;而且结果往往受主观因素影响。想象一下&#xff0c;面对数百万个无序点云&#xff0c;如何快速区分地面、植被…...

Qwen3-Embedding-4B部署教程:NVIDIA驱动+Triton+PyTorch环境兼容性验证

Qwen3-Embedding-4B部署教程&#xff1a;NVIDIA驱动TritonPyTorch环境兼容性验证 1. 项目概述与核心价值 Qwen3-Embedding-4B是阿里通义千问团队推出的文本嵌入模型&#xff0c;专门用于将文本转换为高维向量表示。与传统的关键词搜索不同&#xff0c;这个模型能够理解文本的…...

别再手动拼接SQL了!MyBatis-Plus的apply方法,5分钟搞定动态日期查询

告别字符串拼接&#xff1a;MyBatis-Plus的apply方法实现动态日期查询 在Java后端开发中&#xff0c;处理动态SQL查询是家常便饭。特别是涉及到日期格式化的场景&#xff0c;比如需要查询生日为特定年月日的用户记录&#xff0c;很多开发者第一反应可能是手动拼接SQL字符串。这…...

2025届学术党必备的AI辅助论文神器实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下&#xff0c;各种各样的AI生成内容检测器被广泛地运用着&#xff0c;这致使那些依赖AI辅…...