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

vue长列表,虚拟滚动

1.新建子组件,将数据传递过去(几万条数据的数组,一次性展示多少条,每条数据的行高).

<template><div class="vitualScroll"><sub-scroll :dataList="dataList" :rowCount="20" :rowHeight="20"></sub-scroll></div>
</template><script>
import subScroll from "./components/subScroll.vue"
export default{name: 'virtualScroll',data(){return {//冻结数组,初步优化dataList: Object.freeze(new Array(20000).fill(null).map((item, index) => ({ n: index+1 })))}},components:{subScroll}
}
</script>
<style scoped lang="less">
.vitualScroll{width: 100%;height: 100%;
}
</style>

2.子组件subScroll.vue

div.scrollBar用来使父盒子出现滚动条,div.scrollBar的高度就是数据总条数*单条数据的高度。

div.list才是v-for数据的盒子,采用绝对定位,在父元素滑动事件中更新数据,并且将div.list的位置拉回来(div.list采用绝对定位,滑动滚动会往上跑)

<template><div class="scrollView" ref="scrollView" :style="{'--rowHeight': $props.rowHeight + 'px'}" @scroll="onScroll()"><div class="scrollBar" :style="{'--scrollBarHeight': $props.dataList.length * $props.rowHeight + 'px'}"></div><div class="list" ref="list"><div class="item" v-for="(item, index) in copyDataList" :key="index">{{ item.n }}</div></div></div>
</template><script>
export default{name: 'subScroll',data(){return {start: 0}},computed:{copyDataList(){return this.$props.dataList.slice(this.start, this.$props.rowCount + this.start)}},props:{dataList: {type: Array,default(){return [{}]}},rowCount: {type: Number,default: 0},rowHeight: {type: Number,default: 0}},mounted(){},methods: {onScroll(){//全局节流函数this.$throttle(this.updataData, 50)},updataData(){let offsetTop = this.$refs.scrollView.scrollToplet offsetNum = Math.round(offsetTop / this.$props.rowHeight)this.start = offsetNumthis.$refs.list.style.transform = `translateY(${offsetTop}px)`console.log('滑动的距离', offsetTop)}}
}
</script><style lang="less" scoped>
.scrollView{width: 200px;height: 400px;overflow: auto;position: relative;.item{height: var(--rowHeight);}.scrollBar{height: var(--scrollBarHeight);}.list{position: absolute;top: 0;left: 0;right: 0;bottom: 0;}
}
</style>

相关文章:

vue长列表,虚拟滚动

1.新建子组件&#xff0c;将数据传递过去(几万条数据的数组&#xff0c;一次性展示多少条&#xff0c;每条数据的行高). <template><div class"vitualScroll"><sub-scroll :dataList"dataList" :rowCount"20" :rowHeight"2…...

【实战场景】记一次UAT jvm故障排查经历

【实战场景】记一次UAT jvm故障排查经历 开篇词&#xff1a;干货篇&#xff1a;1.查看系统资源使用情况2.将十进制进程号转成十六进制3.使用jstack工具监视进程的垃圾回收情况4.输出指定线程的堆内存信息5.观察日志6.本地环境复现 总结篇&#xff1a;我是杰叔叔&#xff0c;一名…...

线性代数--行列式1

本篇来自对线性代数第一篇的行列式的一个总结。 主要是行列式中有些关键点和注意事项&#xff0c;便于之后的考研复习使用。 首先&#xff0c;对于普通的二阶和三阶行列式&#xff0c;我们可以直接对其进行拆开&#xff0c;展开。 而对于n阶行列式 其行列式的值等于它的任意…...

tensorflow神经网络

训练一个图像识别模型&#xff0c;使用TensorFlow&#xff0c;需要以下步骤。 1. 安装所需的库 首先&#xff0c;确保安装了TensorFlow和其他所需的库。 pip install tensorflow numpy matplotlib2. 数据准备 需要收集和准备训练数据。每个类别应有足够多的样本图像。假设有…...

Python基础001

Python输出语句 print输出字符串 print("中国四大名著&#xff1a;","西游记|","三国演义|","红楼梦|","水浒传") print(6) print(1 1)Python输入语句 input函数 input() input("我的名字是&#xff1a;") p…...

【udp报文】udp报文未自动分片,报文过长被拦截问题定位

问题现象 某局点出现一个奇怪的现象&#xff0c;客户端给服务端发送消息&#xff0c;服务端仅能收到小部分消息&#xff0c;大部分消息从客户端发出后&#xff0c;服务端都未收到。 问题定位 初步分析 根据现象初步分析&#xff0c;有可能是网络原因导致消息到服务端不可达&a…...

某网页gpt的JS逆向

原网页网址 (base64) 在线解码 aHR0cHM6Ly9jbGF1ZGUzLmZyZWUyZ3B0Lnh5ei8 逆向效果图 调用代码&#xff08;复制即用&#xff09; 把倒数第三行换成下面的base64解码 aHR0cHM6Ly9jbGF1ZGUzLmZyZWUyZ3B0Lnh5ei9hcGkvZ2VuZXJhdGU import hashlib import time import reques…...

【python脚本】批量检测sql延时注入

文章目录 前言批量检测sql延时注入工作原理脚本演示 前言 SQL延时注入是一种在Web应用程序中利用SQL注入漏洞的技术&#xff0c;当传统的基于错误信息或数据回显的注入方法不可行时&#xff0c;例如当Web应用进行了安全配置&#xff0c;不显示任何错误信息或敏感数据时&#x…...

在C++中如何理解const关键字的不同用法(如const变量、const成员函数、const对象等)

在C中&#xff0c;const关键字是一个非常重要的修饰符&#xff0c;它用于指明变量、函数参数、成员函数或对象的内容是不可变的。理解const的不同用法对于编写高质量、易维护的C代码至关重要。下面详细解释const在几种不同上下文中的用法和含义。 1. const变量 当变量被声明为…...

JavaSEJava8 时间日期API + 使用心得

文章目录 1. LocalDate2. LocalTime3. LocalDateTime3.1创建 LocalDateTime3.2 LocalDateTime获取方法 4. LocalDateTime转换方法4.1 LocalDateTime增加或者减少时间的方法4.2 LocalDateTime修改方法 5. Period6. Duration7. 格式转换7.1 时间日期转换为字符串7.2 字符串转换为…...

【亲测解决】Python时间问题

微信公众号&#xff1a;leetcode_algos_life&#xff0c;代码随想随记 小红书&#xff1a;412408155 CSDN&#xff1a;https://blog.csdn.net/woai8339?typeblog &#xff0c;代码随想随记 GitHub: https://github.com/riverind 抖音【暂未开始&#xff0c;计划开始】&#xf…...

Linux屏幕驱动开发调试笔记

引言 首先了解下什么是MIPI-DSI&#xff1a; MIPI-DSI是一种应用于显示技术的串行接口&#xff0c;兼容DPI(显示像素接口&#xff0c;Display Pixel Interface)、DBI(显示总线接口&#xff0c;Display Bus Interface)和DCS(显示命令集&#xff0c;Display Command Set)&#…...

Nginx Http缓存的必要性!启发式缓存有什么弊端?

&#x1f440; Nginx Http缓存的必要性&#xff01;启发式缓存有什么弊端&#xff1f; 简介启发式缓存引发的问题nginx缓存配置 简介 我们在使用React或者Vue开发项目中会使用hash、chunkhash、contenthash来给静态资源文件进行命名。这带来的好处便是当我们部署完项目后&…...

【RT摩拳擦掌】RT云端测试之百度天工物接入构建(设备型)

【RT摩拳擦掌】RT云端测试之百度天工物接入构建&#xff08;设备型&#xff09; 一&#xff0c; 文档介绍二&#xff0c; 物接入IOT Hub物影子构建2.1 创建设备型项目2.2 创建物模型2.3 创建物影子 三&#xff0c; MQTT fx客户端连接云端3.1 MQTT fx配置3.2 MQTT fx订阅3.3 MQT…...

Mysql和ES使用汇总

一、mysql和ES在业务上的配合使用 一般使用时使用ES 中存储全文检索的关键字与获取的商品详情的id&#xff0c;通过ES查询获取查询商品的列表中展示的数据&#xff0c;通过展示id 操作去获取展示商品的所有信息。mysql根据id去查询数据库数据是很快的&#xff1b; 为什么ES一般…...

Android中使用performClick触发点击事件

Android中使用performClick触发点击事件 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨在Android开发中如何使用 performClick() 方法来触发点击…...

重生之我要学后端01--后端语言选择和对应框架选择

编程语言 后端开发通常需要掌握至少一种编程语言。以下几种语言在后端开发中非常流行&#xff1a; Java&#xff1a;广泛用于企业级应用程序。Python&#xff1a;因其易学性和强大的库支持&#xff08;如Django和Flask&#xff09;而受欢迎。Node.js&#xff08;JavaScript&a…...

C语言 | Leetcode C语言题解之第206题反转链表

题目&#xff1a; 题解&#xff1a; struct ListNode* reverseList(struct ListNode* head) {if (head NULL || head->next NULL) {return head;}struct ListNode* newHead reverseList(head->next);head->next->next head;head->next NULL;return newHea…...

Flink Window DEMO 学习

该文档演示了fink windows的操作DEMO 环境准备&#xff1a; kafka本地运行&#xff1a;kafka部署自动生成名字代码&#xff1a;随机名自动生成随机IP代码&#xff1a;随机IPFlink 1.18 测试数据 自动向kafka推送数据 import cn.hutool.core.date.DateUtil; import com.alibab…...

library source does not match the bytecode for class SpringApplication

library source does not match the bytecode for class SpringApplication 问题描述&#xff1a;springboot源码点进去然后download source后提示标题内容。spring版本5.2.8.RELEASE&#xff0c;springboot版本2.7.18 解决方法&#xff1a;把spring版本改为与boot版本对应的6.…...

智能卡通信调优实战:手把手教你用逻辑分析仪抓取并解析ISO7816 PPS协商过程

智能卡通信调优实战&#xff1a;手把手教你用逻辑分析仪抓取并解析ISO7816 PPS协商过程 在嵌入式系统和智能卡应用开发中&#xff0c;通信稳定性往往是项目成败的关键。当你的智能卡设备频繁出现通信中断、数据丢失或速率不达标时&#xff0c;问题很可能隐藏在协议协商阶段。IS…...

ESXi 7.0 驱动改造实战:为Mellanox ConnectX-2 10GbE双口网卡注入新生命

1. 为什么需要改造ESXi 7.0驱动&#xff1f; 在虚拟化环境中&#xff0c;10GbE网络对于提升整体性能至关重要。Mellanox ConnectX-2作为曾经的高性能网卡&#xff0c;虽然官方已经停止支持&#xff0c;但其硬件素质依然能打。我自己就遇到过这样的场景&#xff1a;公司实验室有…...

BLE AT指令实战:从GAP广播到GATT服务构建的嵌入式蓝牙开发指南

1. 项目概述与BLE AT指令核心价值如果你正在捣鼓物联网设备、可穿戴硬件或者任何需要无线连接的嵌入式项目&#xff0c;蓝牙低功耗&#xff08;BLE&#xff09;技术大概率是你绕不开的一环。它功耗低、连接快&#xff0c;非常适合那些需要长时间运行、间歇性传输少量数据的场景…...

终极解决Windows风扇控制难题:FanControl完全指南

终极解决Windows风扇控制难题&#xff1a;FanControl完全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fan…...

暗黑3终极按键助手D3KeyHelper:图形化配置解放你的双手

暗黑3终极按键助手D3KeyHelper&#xff1a;图形化配置解放你的双手 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑破坏神3中繁琐的技能按…...

深兰科技签约乌兹别克斯坦智慧城市项目,推动中国AI出海规模化

2026年5月11日&#xff0c;深兰人工智能科技(上海)股份有限公司与乌兹别克斯坦合作方在上海张江总部举行签约仪式。双方将围绕乌兹别克斯坦新塔什干新城(Yangi Toshkent)智慧城市建设展开合作&#xff0c;深兰科技通过控股乌兹别克项目公司&#xff0c;围绕智慧城市、智慧住宅、…...

Harness Engineering:用“确定性“驾驭AI的“不确定性“

上一篇 SDD 系列收尾时&#xff0c;留了一句话&#xff1a;“如何驾驭 AI 来赋能整个软件开发周期&#xff0c;将是另外一个值得深入探讨的话题。” 到现在有将近一个月没更新&#xff01;期间除了偷懒&#xff0c;五一跑高速添堵之外&#xff0c;主要的原因是这个问题没怎么想…...

新手也能玩转CTF内存取证:从Win7镜像到Volatility插件实战(附Gimp调图技巧)

新手也能玩转CTF内存取证&#xff1a;从Win7镜像到Volatility插件实战&#xff08;附Gimp调图技巧&#xff09; 当你第一次接触CTF比赛中的内存取证题目时&#xff0c;面对一个陌生的内存镜像文件和一堆专业工具&#xff0c;可能会感到无从下手。本文将带你从零开始&#xff0c…...

《Java 100 天进阶之路》第23篇:缓冲区数据结构 ByteBuffer

第23篇&#xff1a;缓冲区数据结构 ByteBuffer &#x1f4cc; 系列导航&#xff1a;《Java 100 天进阶之路》完整目录 | ⬅️ 上一篇&#xff1a;第22篇&#xff1a;Java字符串简介 | ➡️ 下一篇&#xff1a;第24篇&#xff1a;Java枚举类型 enum 用法&#x1f448; 待发布 一…...

开源机械爪OpenClaw UBI:从3D打印到Arduino控制的低成本机器人抓取方案

1. 项目概述&#xff1a;一个基于开源硬件的机械爪设计与实现最近在整理工作室的物料时&#xff0c;翻出了几个闲置的步进电机和一堆3D打印件&#xff0c;这让我想起了几年前一个挺有意思的项目——OpenClaw UBI。这是一个在开源硬件社区里流传的、基于通用构建接口&#xff08…...