vue大数据展示之虚拟列表

news2024/9/28 3:26:25

 面试代码学习

 父组件:

<template>
    <div class="box">
      <!--items总条数、 size数据高度、 shownumber每次渲染数据-->
      <list :items="items" :size="60" :shownumber="10"></list>
    </div>
  </div>
</template>
<script>

import list from './list.vue'
export default {
  components: {
    list,
  },
  data() {
    return {}
  },
  computed: {
    items() {
      return Array(10000).fill('').map((item, index) => {
        return {
          id: index,
          content: '列表内容' + index
        }
      })
    }
  }
};
</script>

子组件

list.vue

<template>
    <div class="container" :style="{ height: containerHeight }" @scroll="handleScroll" ref="container">
      <!-- list 高度为 所有数据的高度  listTop 动态改变高度位置-->
      <div class="list" :style="{ top: listTop }">
        <div v-for="item in showData" :key="item.id" :style="{height: size + 'px'}">
          {{ item.content }}
        </div>
        <!-- 撑开所有元素列表高度 -->
        <div class="bar" :style="{height: barHeight}"></div>
      </div>
    </div>
  </template>
  
  <script>
  export default {
    props: {
      items: {
        type: Array,
        required: true
      },
      size: {
        type: Number,
        required: true
      },
      shownumber: {
        type: Number,
        required: true
      }
    },
    data() {
      return {
        start: 0, // 起始下标
        end: this.shownumber, // 结束下标
      }
    },
    computed: {
      // 展示数据
      showData() {
        return this.items.slice(this.start, this.end)
      },
      // 列表高度
      containerHeight() {
        return this.size * this.shownumber + 'px'
      },
      // 撑开容器高度的元素高度
      barHeight() {
        return this.size * this.items.length - this.start * this.size + 'px'
      },
      // 列表 距离顶部的距离
      listTop() {
        return this.start * this.size + 'px'
      }
    },
    methods: {
      // 滚动事件
      handleScroll() {
        // 获取滚动条距离顶部的距离
        const scrollTop = this.$refs.container.scrollTop
        // 计算卷去的数据条数,用计算的结果作为获取数据的起始和结束下标
        // 起始下标就是券去的数据条数向下取整
        this.start = Math.floor(scrollTop / this.size)
        // 结束的下标就是起始下标加上展示的条数
        this.end = Math.min(this.start + this.shownumber, this.items.length)
        console.log(this.start + '---' + this.end)
      }
    }
  }
  </script>
  
  <style scoped>
  .container {
    overflow-y: auto;
    background-color: rgba(255, 255, 255, 0.5);
    font-size: 20px;
    font-weight: bold;
    line-height: 60px;
    width: 500px;
    margin: 0 auto;
    position: relative;
    text-align: center;
  }
  .list {
    position: absolute;
    top: 0;
    width: 100%;
  }
  </style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

要实现主动元数据,关键技术在算子级血缘解析

主动元数据管理最早被 Gartner 在 2016 年提出&#xff0c;在 2022 年 Gartner 公布的顶级战略技术趋势中&#xff0c;主动元数据被认为是实现 Data Fabric&#xff08;数据编织&#xff09;和主动数据治理的基石&#xff0c;也是实现 Data Fabric 的关键能力 。在这份技术趋势…

全面解析:动态住宅代理的关键优势

在大数据时代的背景下&#xff0c;代理IP成为了很多企业顺利开展的重要工具。代理IP地址可以分为住宅代理IP地址和数据中心代理IP地址。选择住宅代理IP的好处是可以实现真正的高匿名性&#xff0c;而使用数据中心代理IP可能会暴露自己使用代理的情况。 住宅代理IP是指互联网服务…

关于springboot的Rest请求映射处理的源码分析(二)

前面我们知道了他怎么处理表单映射&#xff0c;这里我们来研究一下&#xff0c;他是如何处理具体请求的。也就是说我有那么多/user你是怎么定位到我在哪个cotroller&#xff0c;并且你是怎么定位到我具体是哪个接口。 这里我们就来逐步定位一下这个问题。 一、组件分析 老路子…

Nacos 部分漏洞整理

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. Naco简介 微信公众号搜索:南风漏洞复现文库 该文…

element中 el-input 不更新的问题

需要在上面输入数字,下面一列都更改成一样的数字 batchChange(list,field,value){console.log(list,field,value);list.forEach((i,index) > {i[field]value;this.$set(list,index, JSON.parse(JSON.stringify(i)));});} 用 JSON.parse(JSON.stringify(i)) 转一下后,就可以…

langchain入门系列之八 langgraph多agent示例

在之前的文章中我们介绍了langgraph&#xff0c;并且用它做了一个小小的示例&#xff0c;在本文中&#xff0c;我们将使用智普清言来构建多agent 系统。百度千帆对langgraph支持较差(尤其是强制要求奇数偶数的role设置&#xff0c;传入messages的奇数偶数要求&#xff0c;让人有…

用好外呼机器人,帮助企业提升客户管理效率

外呼机器人&#xff0c;作为现代科技与企业管理的结合体&#xff0c;正在企业客户管理领域掀起革命性的变化。随着人工智能技术的不断进步&#xff0c;外呼机器人不仅实现了自动化呼叫&#xff0c;还能根据客户的语音情感进行相应的反馈和操作&#xff0c;极大地提高了客户满意…

AI大模型编写多线程并发框架(六十三):监听器优化·上

系列文章目录 文章目录 系列文章目录前言一、项目背景二、第七轮对话-补充异步执行代码三、第八轮对话-增加累计完成等字眼四、第九轮对话-线程安全优化五、第十轮对话-增加运行时数据七、参考文章 前言 在这个充满技术创新的时代&#xff0c;AI大模型正成为开发者们的新宠。它…

SpringBoot+Vue的图书管理系统【包含运行步骤】

SpringBootVue图书管理系统 一、项目介绍1. 图书信息管理2. 图书类型管理3. 图书借阅管理4. 用户管理 二、技术选型后端技术选型前端技术选型 三、运行步骤后端启动前端启动 四、项目演示源码获取方式 五、总结与展望 大家好&#xff0c;这里是程序猿代码之路&#xff01;随着信…

Linux基础1-基本指令7(其他常用指令,shell简介)

目录 1.uname 2.常用小指令 3.查看系统信息的其他指令 4.shell命令及其原理 4.1这里我们简单了解一下shell 4.2 shell存在的意义&#xff1f; 1.uname 如何查看计算机体系架构&#xff1f; uname -a,查看详细信息 uname -r 查看简要信息 2.常用小指令 TAB&#x…

Socket编程---UDP篇

目录 一. UDP协议 二. Socket编程 2.1 sockaddr家族 2.2 接口介绍 三. 服务端实现 四. 服务端调用实现 五. 客户端实现 六. 效果展示 一. UDP协议 何为UDP协议的含义&#xff0c;上篇粗略提及了一下TCP与UDP的区别&#xff1a; TCP&#xff1a; •…

将军百战死,程序十年成

将军百战死&#xff0c;程序十年成 十年前的 2014.8.3 我释出了动词算子式通用代码生成器的第一个完整版本 InfinityGPGenerator 0.6.5&#xff0c;即无垠式通用代码生成器 0.6.5。这是一个重大的里程碑。十年后&#xff0c;通用代码生成器已经是一个大家族。昨天&#xff0c;…

插入排序的动画展示与实现

排序学习思路&#xff1a;先实现单趟逻辑&#xff0c;在实现整体逻辑&#xff1b;先解决普遍情况&#xff0c;再解决特殊情况。 什么是插入排序 回忆下自己玩扑克牌的时候是怎么把手上的牌理顺的吧&#xff01;其实那就是插入排序&#xff0c;从左边往右边&#xff0c;把一张张…

强烈推荐!大模型辅助软件开发

图书推荐 作者介绍 很喜欢作者在书上的这句话了&#xff1a;是人类工程师的能力&#xff0c;而不是大模型的能力&#xff0c;决定了大模型协作式开发的上限。 本书内容 软件开发正在经历一场前所未有的范式变革。人工智能的飞速发展&#xff0c;特别是大型语言模型所取得的成…

【Python篇】Python 类和对象:详细讲解(上篇)

文章目录 Python 类和对象&#xff1a;详细讲解1. 什么是类&#xff08;Class&#xff09;类的定义 2. 什么是对象&#xff08;Object&#xff09;创建对象 3. 属性和方法属性&#xff08;Attributes&#xff09;方法&#xff08;Methods&#xff09;在类中定义属性和方法使用对…

使用facebook开源prophet模型预测上证指数etf股价

可以图个乐&#xff0c;没有那么准确&#xff0c;可能还需要更深入的研究分析 蓝线是预测的2024年的走势&#xff0c;绿线是实际走势&#xff0c;红线是历史和未来的分界线。结果上有蛮多差异的。 # 测试预测2024年 coded by luke 伊玛目的门徒 import akshare as ak impor…

基于Java的心灵治愈交流平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java语言&#xff1b;Spring Boot框架 工具&#xff1a;IDEA/Eclipse、Navicat 系统展示 首页 心…

美畅物联丨实时通信新篇章:Spring Boot与WebSocket的深度融合实践

在当今 Web 应用开发领域&#xff0c;实时通信功能已跃升为不可或缺的基石&#xff0c;特别是在即时消息传递、沉浸式在线游戏体验以及精准实时数据监控等关键领域。WebSocket协议&#xff0c;凭借其独特的全双工通讯机制&#xff0c;在单个持久连接上实现了服务器与客户端之间…

软件测试面试题「值得收藏」

1、B/S架构和C/S架构区别&#xff1f; 1、架构不同&#xff1a;B/S架构是浏览器/服务器架构&#xff0c;C/S架构是客户端/服务器架构。 2、客户端不同&#xff1a;B/S架构的客户端是浏览器&#xff0c;C/S架构的客户端是客户端程序。 3、功能不同&#xff1a;B/S架构主要用于…

PhpStorm2024版设置自动换行(软换行)

Settings > Editor > General > Soft Wraps 选中并加上对应的文件