在Vue框架中如何实现列表无缝滚动,代码是什么
Admin 2022-07-11 群英技术资讯 884 次浏览
今天就跟大家聊聊有关“在Vue框架中如何实现列表无缝滚动,代码是什么”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“在Vue框架中如何实现列表无缝滚动,代码是什么”文章能对大家有帮助。本文实例为大家分享了vue实现列表无缝滚动的具体代码,供大家参考,具体内容如下
HTML部分代码
<template>
<div id="box" class="wrapper">
<div class="contain" id="con1" ref="con1" :class="{anim:animate==true}">
<List
v-for="(item,index) in cloudList"
:key="index"
:listData="item"
:index="index"
:date="date"
></List>
</div>
</div>
</template>
List是单个列表组件,也可以替换成li。
css部分代码
<style scoped>
.wrapper {
width: 96vw;
height: 90vh;
position: absolute;
left: 2vw;
top: 1rem;
overflow: hidden;
}
.contain > div:nth-child(2n) {//这个样式是我这个项目所需,与无缝滚动无直接关系,可以忽略
margin-left: 2vw;
}
.anim {
transition: all 0.5s;
margin-top: -7vh;
}
</style>
我的List组件是设置了float:left的,所以id="con1"的div是没有高度的
js部分代码
<script>
import List from './List';
export default {
name: 'Contain',
data () {
return {
cloudList: [],//数组用来存放列表数据
date: '',//最新数据更新日期
animate: false,
time: 3000,//定时滚动的间隙时间
setTimeout1: null,
setInterval1: null
};
},
components: {
List
},
methods: {
// 获取json数据并且更新日期
getCloudListData () {
const _this = this;
_this.$api.getCloudListData().then(res => {
_this.cloudList = res;
});
var newDate = new Date();
_this.date = _this.dateFtt('yyyy-MM-dd hh:mm:ss', newDate);
},
// 日期格式化
dateFtt (fmt, date) {
var o = {
'M+': date.getMonth() + 1, // 月份
'd+': date.getDate(), // 日
'h+': date.getHours(), // 小时
'm+': date.getMinutes(), // 分
's+': date.getSeconds(), // 秒
'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
S: date.getMilliseconds() // 毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length)
);
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length === 1
? o[k]
: ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return fmt;
},
// 滚动
scroll () {
const _this = this;
_this.animate = true;
clearTimeout(_this.setTimeout1);
_this.setTimeout1 = setTimeout(() => {
var parent = document.getElementById('con1');
var first = document.getElementById('con1').children[0];
var second = document.getElementById('con1').children[1];
parent.removeChild(first);
parent.removeChild(second);
parent.appendChild(first);
parent.appendChild(second);
_this.animate = false;
}, 500);
}
},
created () {
const _this = this;
_this.getCloudListData();
//定时器每隔24小时更新一次数据
setInterval(() => {
_this.getCloudListData();
}, 24 * 60 * 60 * 1000);
},
mounted () {
const _this = this;
var contain = document.getElementById('box');
_this.setInterval1 = setInterval(_this.scroll, _this.time);
var setInterval2 = null;
// 鼠标移入滚动区域停止滚动
contain.onmouseenter = function () {
clearInterval(_this.setInterval1);
var count = 0;
// 如果鼠标超过十秒不动 就启动滚动
setInterval2 = setInterval(function () {
count++;
if (count === 10) {
_this.scroll();
_this.setInterval1 = setInterval(_this.scroll, _this.time);
}
}, 1000);
//鼠标一动就停止滚动并且计数count置为0
contain.onmousemove = function () {
count = 0;
clearInterval(_this.setInterval1);
};
};
// 鼠标移出滚动区域
contain.onmouseleave = function () {
clearInterval(setInterval2);
clearInterval(_this.setInterval1);
_this.scroll();
_this.setInterval1 = setInterval(_this.scroll, _this.time);
};
}
};
</script>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
JavaScript本地存储与会话存储的实现介绍 目录 一.简单介绍 二.localStorage本地存储 三.sessionStorage会话存储 总结 一.简单介绍 本地存储和会话存储的目的,是将所输入的文件存入到浏览器中,在需要的时候,直接调用,但是本地存储和会话存储有着一定的区别,本地存储,在不主动删除的情况下,会一直保留在浏览器中,会话存储是,当前保存的内容,页面刷新还会保留在浏览器中,但是关闭页面在打开时,会发现没有数据了.这是他们两的用处和区别. 二.localStorage本地存储 如下代码 我们先给button一个监听事件,让
这篇文章主要为大家介绍了vue原理Compile之optimize标记静态节点源码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要给大家分享得是四十九个javascript小知识实用技巧像下面文章围绕JavaScript得各种技巧详细介绍,需要的朋友可以参考一下,希望对你有所帮助
TypeScript中怎么写函数重载?下面本篇文章给大家介绍一下TypeScript中函数重载写法,希望对大家有所帮助!
这篇文章主要介绍了SpringBoot+Vue 前后端合并部署的配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008