IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue列表循环滚动 -> 正文阅读

[JavaScript知识库]vue列表循环滚动

功能介绍:

在PC端网页,包括大数据、官网、后台管理平台开发中,可能会用到这种列表循环滚动的展示。

大致需求:

  1. 列表可以使用数组循环遍历;
  2. 每隔几秒中列表数据向上滚动一定距离,展示下一条数据;
  3. 滚动到最后一条数据时重新显示第一条开始的数据(类似走马灯、banner图的循环效果);

整体思路:

  1. 使用两个定时器嵌套实现;
  2. 需要两个相同容器存放同样内容,实现无缝衔接效果;

效果展示:

请添加图片描述

完整代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://unpkg.com/vue@2.6.14/dist/vue.min.js"></script>
		<style>
			/* 滚动表格最外层 */
			.tableoOut {
				margin: 100px auto;
			    width: 500px;
			    height: 400px;
				background: pink;
			    overflow: hidden;
			    display: flex;
			    align-items: center;
			    justify-content: center;
			    flex-direction: column;
			}
			.tableBox {
			    width: 100%;
				background: #000;
			    overflow: hidden
			}
			.tableTit {
				background: #000;
			    width: 100%;
			    height: 40px;
			    color: #858A84;
			    text-align: center;
			    display: flex;
			    justify-content: center;
			    align-items: center;
			}
			.tableInner {
			    height: auto;
			}
			.box {
			    width: 100%;
			    height: 50px;
			    display: flex;
			    justify-content: center;
			    align-items: center;
			    color: #fff;
			}
			.box .time {
			    color: #858A84;
			}
			.tableoOut .addr, .tableoOut .time, .tableoOut .name {
			    box-sizing: border-box;
			    padding: 0 5px;text-align: center;
			    overflow: hidden;
				white-space: nowrap;
				text-overflow: ellipsis;
			}
			.tableoOut .addr {
			    width: calc(100% - 200px);
			    flex-shrink: 0;
			}
			.tableoOut .name, .tableoOut .time {
			    width: 100px;
			    flex-shrink: 0;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div class="tableoOut" ref="tableoOut">
				<div class="tableTit">
					<div class="name">姓名</div>
					<div class="addr">地址</div>
					<div class="time">入驻时间</div>
				</div>
				<div class="tableBox" ref="tableBox"
					:style="{height: tableHei}">
					<div class="tableInner" ref="tableInner">
						<div class="box" v-for="item in 7" :key="item">
							<div class="name">{{item}}</div>
							<div class="addr">山东省山东省山东省山东省山东省山东省山东省山东省
							山东省山东省山东省山东省山东省</div>
							<div class="time">2022-05-26</div>
						</div>
					</div>
					<div class="tableInner" v-if="size < 7">
						<div class="box" v-for="item in 7" :key="item">
							<div class="name">{{item}}</div>
							<div class="addr">山东省山东省山东省山东省山东省山东省山东省山东省
							山东省山东省山东省山东省山东省</div>
							<div class="time">2022-05-26</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</body>
	<script>
		new Vue({
			el: '#app',
			data: {
				tableHei: 'auto',
				timer: null,
				size: 0
			},
			mounted() {
				this.getTable();
			},
			methods: {
				getTable() {
					const outHei = this.$refs.tableoOut.clientHeight - 60;
					this.size = Math.floor(outHei / 50);
					this.tableHei = this.size * 50 + 'px';
					this.scrolls();
				},
				stepScroll() {
					const step = 50;
					let num = 0;
					const tableBox = this.$refs.tableBox;
					const stepTime = setInterval(function () {
						num += 2;
						if (num > step) {
							num = 0;
							clearInterval(stepTime);
						} else {
							tableBox.scrollTop += 2;
						}
					}, 20);
				},
				scrolls() {
					const that = this;
					const tableBox = this.$refs.tableBox;
					const tableInner = this.$refs.tableInner;
					clearInterval(this.timer);
					this.timer = setInterval(function () {
						if(tableBox.scrollTop === tableInner.scrollHeight) {
							tableBox.scrollTop = 0;
						}
						that.stepScroll();
					}, 2000);
				},
			}
		})
	</script>
</html>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:07:38  更:2022-06-01 15:08:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:32:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码