今天做大屏的时候需要做一个滚动的效果,从博客看了一个比较简单的,记录一下,方便查看,其实自动滚动归根结底也是一个定时器,每隔多少时间移动其中的内容多少像素,直播过其中间隔的时间很少,肉眼所视的是一个连续的动作,下面直接看代码。
// 拿到表格挂载后的真实DOM const table = this.$refs.anomalyTableInfo; // 拿到表格中承载数据的div元素 const divData = table.bodyWrapper; // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素) this.dingshitwo = setInterval(() => { // 元素自增距离顶部1像素 divData.scrollTop += 1; // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度) if (divData.clientHeight + divData.scrollTop == divData.scrollHeight) { // 重置table距离顶部距离 divData.scrollTop = 0; } }, 100); // 滚动速度
我这里放了两段代码,第一段是针对element表格的,其实就多了一步拿到承载表格数据的div,这两段定时器之前的都是为了获取整个承载容器,而我的第二步能直接拿到容器,所有没有table.bodyWrapper,当我们拿到了整个div之后就可以放定时器了,大家请注意,定时器一定要定义一下,我这里起的名比较low用的,one,two,three大家不要学我.
━((*′д`)爻(′д`*))━!!!!
为什么要定义一下,待会我们再说,现在每100毫秒执行一次,并使元素距离顶部加一,当可视高度+距离顶部的高度和整个高度相等时,意味着我们的数据到了底部,这时候我们重新把距离顶部的高度变成0,
现在是大揭秘时间,为什么要定义----------定义它就是为了销毁他。这里的gundong就是最上面的两段开启定时器的代码。
这里我们可以通过鼠标滑动滑出以及清除定时器来达到暂停的效果,另外,当页面被关掉的时候,一定要清除定时器,这里说过很多次,为了防止内存泄漏和代码的规范性,希望大家不要忘记。
以上就是简单定时器的实现了。
上一篇: 另一种图片切换-利用i实现简单切换
下一篇: echarts巧用箭头函数获取Vue实例