vue实现无缝滚动的示例详解

 更新时间:2023年09月06日 08:42:11   作者:Maidangchen  
这篇文章主要为大家详细介绍了vue非组件如何实现列表的无缝滚动效果,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下

vue非组件实现列表的无缝滚动问题(小编能力有限,如有更好方法还请大佬指点一二)

*原理:首先循环两遍数组,当容器滚去第一个数组高度的时候,第二个数组刚好填满容器,这时候将滚去高度设置为0则可以实现无缝滚动。

*简易原理图如下

话不多说直接上代码:

1.采用js的方法实现

<template>
	<div>
		<div class="box">
			<div v-for="item in 2" class="item-box" :style="{transform:'translate(0,'+scrollTop+'px)'}">
				<div class="item" v-for="i in 9">{{i}}</div>
			</div>
		</div>
	</div>
</template>
<script>
	export default {
		data() {
			return {
				scrollTop: 0,
			}
		},
		onLoad() {
			this.roll()
		},
		methods: {
			roll() {
				if (this.scrollTop == -300) {
					this.scrollTop = 0
				}
				this.scrollTop -= 1;
				setTimeout(() => {
					this.roll()
				}, 10)
			},
		}
	}
</script>
<style>
	.box {
		width: 320px;
		height: 300px;
		background-color: pink;
		overflow: hidden;
	}
	.box .item-box {
		width: 100%;
		height: 100%;
		display: flex;
		align-items: center;
		justify-content: center;
		flex-wrap: wrap;
	}
	.box .item-box .item {
		width: 29%;
		height: 29%;
		margin: 1%;
		background-color: paleturquoise;
		display: flex;
		align-items: center;
		justify-content: center;
		font-weight: 700;
	}
</style>

2.css动画实现

<template>
	<div>
		<div class="box">
			<div v-for="item in 2" class="item-box">
				<div class="item" v-for="i in 9">{{i}}</div>
			</div>
		</div>
	</div>
</template>
<script>
	export default {
		data() {
			return {}
		},
		methods: {
		}
	}
</script>
<style>
	.box {
		width: 320px;
		height: 300px;
		background-color: pink;
		overflow: hidden;
	}
	.box .item-box {
		width: 100%;
		height: 100%;
		display: flex;
		align-items: center;
		justify-content: center;
		flex-wrap: wrap;
		animation: roll 5s linear infinite;
	}
	.box .item-box .item {
		width: 29%;
		height: 29%;
		margin: 1%;
		background-color: paleturquoise;
		display: flex;
		align-items: center;
		justify-content: center;
		font-weight: 700;
	}
	@keyframes roll {
		0% {
			transform: translate(0, 0px);
		}
		20% {
			transform: translate(0, -60px);
		}
		40% {
			transform: translate(0, -120px);
		}
		60% {
			transform: translate(0, -180px);
		}
		80% {
			transform: translate(0, -240px);
		}
		100% {
			transform: translate(0, -300px);
		}
	}
</style>

到此这篇关于vue实现无缝滚动的示例详解的文章就介绍到这了,更多相关vue无缝滚动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue 中 get / delete 传递数组参数方法

    vue 中 get / delete 传递数组参数方法

    这篇文章主要介绍了vue 中 get / delete 传递数组参数方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Vue项目开发常见问题和解决方案总结

    Vue项目开发常见问题和解决方案总结

    这篇文章主要介绍了Vue项目开发常见问题和解决方案总结,帮助大家更好的利用vue开发,感兴趣的朋友可以了解下
    2020-09-09
  • vue项目中禁用浏览器缓存配置案例

    vue项目中禁用浏览器缓存配置案例

    这篇文章主要介绍了vue项目中禁用浏览器缓存配置案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Vue中使用Scss实现配置、切换主题方式

    Vue中使用Scss实现配置、切换主题方式

    这篇文章主要介绍了Vue中使用Scss实现配置、切换主题方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue路由传参页面刷新后参数丢失原因和解决办法

    Vue路由传参页面刷新后参数丢失原因和解决办法

    这几天在开发中遇见的一个关于路由传参后,页面刷新数据丢失的问题,下面这篇文章主要给大家介绍了关于Vue路由传参页面刷新后参数丢失原因和解决办法,需要的朋友可以参考下
    2022-12-12
  • vue限制输入数字或者保留两位小数实现

    vue限制输入数字或者保留两位小数实现

    这篇文章主要为大家介绍了vue限制输入数字或者保留两位小数实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Vue实现可拖拽组件的方法

    Vue实现可拖拽组件的方法

    这篇文章主要为大家详细介绍了Vue实现可拖拽组件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Vue.js $refs用法案例详解

    Vue.js $refs用法案例详解

    这篇文章主要介绍了Vue.js $refs用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 解决Vue中mounted钩子函数获取节点高度出错问题

    解决Vue中mounted钩子函数获取节点高度出错问题

    本篇文章给大家分享了如何解决Vue中mounted钩子函数获取节点高度出错问题,对此有兴趣的朋友可以参考学习下。
    2018-05-05
  • vue实现div单选多选功能

    vue实现div单选多选功能

    这篇文章主要为大家详细介绍了vue实现div单选多选功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07

最新评论