Vue3列表竖向滚动(包含使用swiper的翻页效果)

一、使用element-plus表格进行滚动:

可以满足的需求:表格一行一行竖向滚动,类似走马灯。
不能满足的需求:表格分页竖向滚动,有翻页的效果。

代码:
<template><el-table:data="tableData":show-overflow-tooltip="true"class="alarmTable"><el-table-columntype="index"width="134"align="center"label="序号"><template #default="scope"><span class="text">{{(scope.$index+1)+(currentPage-1)*(pageSize)}}</span></template></el-table-column><el-table-column prop="name" label="名称" align="left"><template #default="scope"><span class="name-text">{{scope.row.name}}</span></template></el-table-column><el-table-column prop="money" label="金钱" align="center" /></el-table>
</template>
<script lang="ts">
import { defineComponent, onMounted, reactive, ref, toRefs, nextTick, onUnmounted } from 'vue'export default defineComponent({name: 'rank',setup () {// 表格的数据类型interface tableType {name: string;money: number;}const data = reactive({tableData: [] as Array<tableType>, // 表格的数据currentPage: 1, // 当前展示的页码pageSize: 6, // 当前表格一页展示多少条数据tableDom: {} as HTMLElement, // 表格内容的dom})let timeInterval: NodeJS.Timer // 定时器的对象let tableScroll = ref(true) // 是否需要滚动onMounted(() => {// 初始化表格的数据list()scrollTable()})onUnmounted(()=> {clearInterval(timeInterval)})// 初始化表格的数据const list = () => {let arr:Array<tableType> = []for(let i = 0; i < 28; i++) {let randomData = Math.floor(Math.random() * 100)let obj = {name: '名称'+randomData,money: randomData}arr.push(obj)}data.tableData = arr}// 表格的数据滚动const scrollTable = () => {nextTick(() => {// 获取当前表格内容的domlet table = document.getElementsByClassName('alarmTable')[0]data.tableDom = (table.getElementsByClassName('el-scrollbar__wrap')[0])! as HTMLElement// 鼠标放在表格内容,暂停滚动data.tableDom.addEventListener('mouseover', () => {tableScroll.value = false})// 鼠标移出表格内容,继续滚动data.tableDom.addEventListener('mouseout', () => {tableScroll.value = true})// timeInterval = setInterval(() => {if (tableScroll.value) {// 每次内容滚动的距离data.tableDom.scrollTop += 1if (data.tableDom.clientHeight + data.tableDom.scrollTop == data.tableDom.scrollHeight) {data.tableDom.scrollTop = 0}}}, 10)})}return {...toRefs(data)}}
})
</script>
<style lang="scss" scoped>
.alarmTable {margin-top: 40px;height: 623px;overflow: hidden;scroll-behavior: smooth;
}
</style>
<style lang="scss">.el-table, .el-table::before,.el-table--border .el-table__inner-wrapper::after, .el-table--border::after, .el-table--border::before, .el-table__inner-wrapper::before {background: transparent!important;}.el-table th, .el-table__cell>.cell {height: 88px;padding: 0;font-size: 28px;font-weight: 400;color: #FFFFFF;line-height: 88px!important;}.el-table thead {font-size: 28px;font-weight: 600;color: #fff!important;}.el-table tr{background: transparent!important;&:nth-child(2n) {background:  rgba(49, 250, 233, 0.1)!important;}}.el-table th.el-table__cell {height: 88px;padding: 0;background:  rgba(237, 250, 49, 0.1)!important;}.el-table tr:hover>td {cursor: pointer;background-color: rgba(0,148,255,0.3) !important;}.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {border-bottom: none!important;}
</style>
效果:

在这里插入图片描述

二、使用Swiper进行滚动:

1、文档说明https://swiperjs.com/vue

2、下载swiper说明:

高版本(10.0.2)引入 Autoplay 会报错,所以我下载了7.4.1版本(npm install swiper@7.4.1

如果7.4.1版本不好用,可以参考这个文章:https://blog.csdn.net/qq_36131788/article/details/121083045

3、安装swiper成功后在 main.ts 文件中引入css:

import ‘swiper/css’
代码:
<template><div class="swiper-components"><div class="thead"><div v-for="(item,index) in theadData" :key="index" class="thead-tr">{{ item }}</div></div><swiper:slides-per-view="1":autoplay="{ delay: 2000, disableOnInteraction: false }":direction="'vertical'":scrollbar="{ draggable: false }":loop="true":modules="modules"class="swiper-content"><swiper-slide v-for="(item, index) in tableData" :key="index"><div class="swiper-item" v-for="(subItem, subIndex) in item" :key="subIndex"><div class="swiper-td">{{ subItem.index }}</div><div class="swiper-td">{{ subItem.name }}</div><div class="swiper-td">{{ subItem.money }}</div></div></swiper-slide></swiper></div></template><script lang="ts">
import { defineComponent, onMounted, reactive, toRefs } from 'vue'
// 引入swiper核心和所需模块
import  {Autoplay} from 'swiper'
// 引入swiper所需要的组件
import { Swiper, SwiperSlide } from 'swiper/vue'export default defineComponent({name: 'SwiperComponents',components: {Swiper,SwiperSlide},setup () {// 表格的数据类型interface tableType {index: number | string;name: string;money: number;}const data = reactive({tableData: [] as Array<tableType>[], // 列表需要的数据modules: [Autoplay], // 这个是自动播放的重点,没有这个不能自动播放!slidesCount: 6, // 每次滑动的数据数量theadData: ['序号', '名称', '金钱'] // 表格表头})onMounted(() => {init()})// 数据初始化const init = () => {// 首先拿到请求的数据let arr = []for (let i = 0; i < 30; i++) {const obj = {index: i + 1,name: '987654',money: Math.floor(Math.random() * 100)}arr.push(obj)}// 根据一页要展示的数量进行数据的处理for (let i = 0; i < arr.length; i += data.slidesCount) {let obj = arr.slice(i, i + data.slidesCount)data.tableData.push(obj)}}return {...toRefs(data)}}
})
</script><style lang="scss" scoped>.swiper-components {margin-top: 40px;.thead {display: flex;justify-content: space-between;background: rgba(49,150,250,0.1);padding: 24px 40px 24px 34px;&-tr {font-size: 28px;font-weight: 600;color: #FFFFFF;line-height: 40px;}}.swiper-content {height: 528px;.swiper-item {display: flex;justify-content: space-between;&:nth-child(2n) {background: rgba(49,150,250,0.1);}}.swiper-td {padding: 24px 0;font-size: 28px;font-weight: 400;color: #FFFFFF;line-height: 40px;&:first-child {width: 134px;text-align: center;}&:last-child {width: 140px;margin-right: 40px;text-align: center;}}}}</style>
效果:

在这里插入图片描述

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

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

相关文章

Redis——》Redis的部署方式对分布式锁的影响

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

Java常见的排序算法

排序分为内部排序和外部排序&#xff08;外部存储&#xff09; 常见的七大排序&#xff0c;这些都是内部排序 。 1、插入排序&#xff1a;直接插入排序 1、插入排序&#xff1a;每次将一个待排序的记录&#xff0c;按其关键字的大小插入到前面已排序好的记录序列 中的适当位置…

ChatGPT AIGC 一个指令总结Python所有知识点

在ChatGPT中,直接输入一个指令就可以生成Python的所有知识点大纲。 非常实用的ChatGPT功能。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.…

Angular中使用drag and drop实现文件拖拽上传,及flask后端接收

效果&#xff1a;拖拽文件到组件上面时 边框变大变红 松手后发送到服务器(或者点击蓝字手动选择文件)并且把文件名显示在框内&#xff0c;美化还没做 html <div class"drapBox"><div id"drop" (dragenter)"dragenter($event)" (dragov…

redis 应用 4: HyperLogLog

我们先思考一个常见的业务问题&#xff1a;如果你负责开发维护一个大型的网站&#xff0c;有一天老板找产品经理要网站每个网页每天的 UV 数据&#xff0c;然后让你来开发这个统计模块&#xff0c;你会如何实现&#xff1f; img 如果统计 PV 那非常好办&#xff0c;给每个网页一…

后台管理系统:项目路由搭建与品牌管理

路由的搭建 先删除一些不需要的界面 然后发现跑不起来&#xff0c;我们需要去配置 删减成这样&#xff0c;然后自己新建需要的路由组件 改成这样&#xff0c;这里要注意。我们是在layout这个大的组件下面的&#xff0c;meta 中的title就是我们侧边栏的标题&#xff0c;icon可…

Java eight 解读流(Stream)、文件(File)、IO和异常处理的使用方法

目录 Java 流(Stream)、文件(File)和IO读取控制台输入读写文件FileInputStreamFileOutputStream Java目录 Java 异常处理 Java 流(Stream)、文件(File)和IO java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种…

51页企业数字化转型战略实践与启示PPT(附400份转型资料)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除&#xff0c;更多内容浏览公众号&#xff1a;智慧方案文库 企业数字化转型之路.pptx企业数字化转型大数据湖一体化平台项目建设方案PPT.pptx企业数字化转型大数据湖一体化运营管…

Angular安全专辑之四 —— 避免服务端可能的资源耗尽(NodeJS)

express-rate-limit是一个简单实用的npm包,用于在Express应用程序中实现速率限制。它可以帮助防止DDoS攻击和暴力破解,同时还允许对API端点进行流控。 express-rate-limit及其主要功能 express-rate-limit是Express框架的一个流行中间件,它允许根据IP地址或其他标准轻松地对请求…

U盘文件恢复软件推荐,这几款高效恢复数据!

“我真的可以算得上是一个u盘杀手了&#xff0c;好多资料保存在u盘中&#xff0c;但经常都会由于粗心导致u盘中的数据丢失。大家有什么u盘文件恢复软件可以推荐吗&#xff1f;救救我的u盘吧&#xff01;” 在现代社会&#xff0c;人手一个u盘一点也不夸张。尤其是学生党和打工人…

阿里云架构

负载均衡slb 分类以及应用场景 负载均衡slb clb 传统的负载均衡(原slb) 支持4层和7层(仅支持对uri(location),域名进行转发) 一般使用slb(clb) alb 应用负载均衡 只支持7层,整合了nginx负载均衡的各种功能,可以根据用户请求头,响应头 如果需要详细处理用户请求(浏…

华为数通方向HCIP-DataCom H12-821题库(单选题:141-160)

第141题 Router-LSA 能够描述不同的链路类型&#xff0c;不属于Router LSA 链路类型的是以下哪一项? A、Link Type 可以用来描述到末梢网络的连接&#xff0c;即 SubNet B、Link Type 可以用来描述到中转网络的连接&#xff0c;即 TranNet C、Link Type 可以用来描述到另一…

2023京东口腔护理赛道行业数据分析(京东销售数据分析)

近年来&#xff0c;口腔护理逐渐成为年轻人重视的健康领域&#xff0c;从口腔护理整体市场来看&#xff0c;牙膏和牙刷等基础口腔护理产品仍占据主导地位。不过&#xff0c;随着口腔护理市场逐步朝向精致化、专业化、多元化等方向发展&#xff0c;不少新兴口腔护理产品受到消费…

算法通关村第8关【白银】| 二叉树的深度和高度问题

1.最大深度问题 思路&#xff1a;递归三部曲 第一步&#xff1a;确定参数和返回值 题目要求求二叉树的深度&#xff0c;也就是有多少层&#xff0c;需要传递一个root从底层向上统计 int maxDepth(TreeNode root) 第二步&#xff1a;确定终止条件 当递归到null时就说明到底了…

SpringMVC中Controller层获取前端请求参数的几种方式

SpringMVC中Controller层获取前端请求参数的几种方式 1、SpringMVC自动绑定2、使用RequestParam 注解进行接收3、RequestBody注解&#xff08;1&#xff09; 使用实体来接收JSON&#xff08;2&#xff09;使用 Map 集合接收JSON&#xff08;3&#xff09; 使用 List集合接收JSO…

持续性能优化:确保应用保持高性能

在当今数字化时代&#xff0c;应用程序的性能已经成为用户体验和业务成功的关键因素之一。无论是Web应用、移动应用还是企业级软件&#xff0c;用户对于速度和响应性的要求越来越高。因此&#xff0c;持续性能优化已经成为保证应用在竞争激烈的市场中脱颖而出的重要策略。 什么…

线性代数的学习和整理15:线性代数的快速方法

1 数学/线性代数里&#xff0c;其实很多东西的求得都有多种解决办法 很多概念&#xff0c;界定狠清晰&#xff0c;但是不好求 多种方法&#xff0c;拓宽思维 方法1&#xff1a;按定义直接去求解 方法2&#xff1a;按 2 比如求逆矩阵 概念方法&#xff0c;线性变化 增广矩阵…

JS 常见的 6 种继承方式

原型链继承 原型链继承是比较常见的继承方式之一&#xff0c;其中涉及的构造函数、原型和实例&#xff0c;三者之间存在着一定的关系&#xff0c;即每一个构造函数都有一个原型对象&#xff0c;原型对象又包含一个指向构造函数的指针&#xff0c;而实例则包含一个原型对象的指…

【遮天】李小曼回归,新形象无差云曦,短板竟是身材?

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析遮天 最新一集《遮天》已经更新&#xff0c;在成功卖掉段德之后&#xff0c;叶凡便离开妖帝坟冢&#xff0c;毕竟他身上拥有庞博从妖帝坟冢带出来的道经和被誉为中州至宝的绿铜 虽然这两样物品都在叶凡的苦海中&#xff0…

【Linux】序列化与反序列化

目录 前言 什么是应用层&#xff1f; 再谈"协议" 什么是序列化和反序列化 网络版计算器 整体流程实现 Sock.hpp的实现 TcpServer.hpp的实现 Protocol.hpp的实现 CalServer.cc的编写 CalClient.cc的编写 整体代码 前言 本章是属于TCP/UDP四层模型中的第一层…