首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js实现单张或多张图片持续无缝滚动

背景: 想要实现图片持续滚动,既然使用js,就千万不要加css动画、过渡等相关样式,如果想要滚动平滑一下,可以一像素一像素感动,则很平滑,如果加了过渡动画,当图片重置为0时,会有往回倒动画效果,跟预期不符...原理: 图片滚动原理同图片轮播原理,同样也适用于文字滚动等一系列滚动,通过复制最后一张图片或最后一堆文字插入第一行,或复制第一张图片或一堆文字插入在结尾,来实现无缝拼接,前提:1、必须是没有设置过渡动画...,2、重置为0时候与当前已经滚动高度对于图片位置而言肉眼看上去没变化。...实现: html主要包含三块: 1、最外层盒子,用来展示滚动区域,overflow:hidden; 2、滚动盒子,主要改变该盒子定位值,来实现滚动,里面包含所有要滚动图片或文字 3、包含图片或文字盒子...代码: class Roll { constructor(opts) { this.elem = opts.elem; // 图片包含滚动长度元素 this.elemBox

7.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

Android使用自定义属性实现图片自动播放滚动功能

大家好,记得上次我带着大家一起实现了一个类似与淘宝客户端中带有的图片滚动播放器效果,但是在做完了之后,发现忘了加入图片自动播放功能(或许是我有意忘记加…..),结果图片只能通过手指滑动来播放。...这次程序开发将完全基于上一次代码,如果有朋友还未看过上篇文章,请先阅读Android实现图片滚动和页签控件功能实现代码。 既然是要加入自动播放功能,那么就有一个非常重要问题需要考虑。...如果当前已经滚动到了最后一张图片,应该怎么办?由于我们目前实现方案是,所有的图片都按照布局文件里面定义顺序横向排列,然后通过偏移第一个图片leftMargin,来决定显示哪一张图片。...这种效果和淘宝客户端是有一定差异(淘宝并没有回滚机制,而是很自然地由最后一张图片滚动到第一张图片),我也研究过淘宝图片滚动实现方法,并不难实现。...*/ private Handler handler = new Handler(); /** * 开启图片自动播放功能,当滚动到最后一张图片时候,会自动回滚到第一张图片

1.5K10

requestAnimationFrame实现单张图片无缝持续滚动

背景 在很久以前,有写过一个使用 js 实现单张图片持续滚动图片 代码,但那一版实现会持续操作DOM,向DOM中插入元素,性能较差,最近发现 requestAnimationFrame 通过 动画方式实现图片滚动更加方便...效果如下 需求描述 需要单张图片在可视区域内无缝持续向上滚动或向左滚动,由于向下和向右属于反着坐标轴移动图片,和正常DOM元素插入展示顺序也相反,遂不考虑此种场景。 代码实现 <!...// imgView: 图片所展示区域窗口view // step 每次移动距离 // direction: 滚动方向,默认 "top" 持续向上滚动...2022.03.09 更新 2、发现在有些场景下图片onload事件触发之后,依然获取不到图片宽高,而上面我们图片滚动是依赖图片宽高,这里需要再加个定时器,轮询获取图片宽高,当确实可以获取到宽高之后...0边界长度 let boundaryValue = 0; // 是否可以执行滚动动画,保证获取到图片真实宽高之后再开始滚动,否则获取不到宽高,始终不会滚动 let canScroll

3.4K20

教你简单实现RecyclerView自动滚动

当RecyclerView内容过多,超出屏幕时候,需要让它自己滚动展示数据,尤其是某些Android设备处于高处,或是不可被触摸点击,这样情况下,让其自己滚动展示数据尤为重要了 自动滚动方案有很多种...,目前比较常见又最简单一种是:继承至RecyclerView,并实现runnable方法,每间隔10ms(delayTime)就去执行scrollby(x,y)方法,其中delayTime和x,y值决定了滚动速度...= null private var running //是否正在滚动 = false private var canRun //是否可以自动滚动,根据数据是否超出屏幕来决定...} } 上面代码实现了最基本滚动功能,但有时候Adnroid设备可以触摸的话,而当前recyclerview正在滚动,又去滑动它,那就会造成界面错乱,数据错乱了,所以还需要重写拦截onTouchEvent...方法,当触摸到recyclerview时候,即在ACTION_DOWN时,停止滚动线程,在ACTION_UP、ACTION_CANCEL时再开启线程。

59140

rAF实现表格内容自动滚动

rAF实现表格内容自动滚动 前言 实习导师让我实现表格内容自动滚动,实际就是大屏项目可能会用上。正好之前看到rAF介绍,实际上也没用过,所以就用rAF来玩一波。...目标: 让表格内容会自动滚动 鼠标悬浮,动画停止 到底后会自动回到顶部,继续滚动 element表格自带滚动 首先呢,element表格是自带了滚动效果,但是需要小小设置一下。...这个时候可能会想:直接使用overflow: auto;不就能实现表格滚动了吗?但是,这个表格滚动效果并不是想要表格内容滚动。表头也会滚不见。...窗口没激活时,动画将暂停以提升性能和电池寿命 实现自动滚动 获取el-scrollbar 容器 需要实现自动滚动,首先得获取el-scrollbar 容器。...我们判断到底后,就使用原生jsscrollTo方法,就能让它回到顶部。

2K20

android实现歌词自动滚动效果

最近在做Android MP3播放项目,要实现歌词自动滚动,以及同步显示。 lyric歌词解析主要用yoyoplayer里面的,显示部分参考了这里 ,这里只是模拟MP3歌词滚动。...滚动实现代码其实也简单。显示画出当前时间点歌词,然后再分别画出改歌词后面和前面的歌词,前面的部分往上推移,后面的部分往下推移,这样就保持了当前时间歌词在中间。...,在这段时间内sleep return currentDunringTime = sen.getDuring(); } } 剩下就是使用他了。...就是取出歌词index,和该行歌词持续时间进行sleep。...包括yoyoplayer解析lyric部分代码。 以上就是本文全部内容,希望对大家学习有所帮助。

2.6K10

Vue 实现图片监听鼠标滑轮滚动实现图片缩小放大功能

前言其实想要实现功能很简单,就是在一张图片上监听鼠标滑轮滚动事件,然后根据上滚还是下滚实现图片缩放。...实现思路在js中,onmousewheel是鼠标滑轮滚动事件,可以通过这个事件触发来改变图片大小,实现图片放大缩小功能。但是我们这里是vue所以使用是:mousewheel。...this.imgWidth = `${this.imgWidth}px`; console.log(this.imgWidth, this.imgHeight, "hou"); }, },当鼠标在这个图片滚动滑轮时候就会被这个时间监听到...单纯使图片缩小放大还不至于使用防抖和节流啥,但是如果需要请求后台记得做好防抖。...在页面有滚动时候,滚动条会随着鼠标滚轮滚动滚动,这是浏览器默认行为,可用return false来取消浏览器默认行为。有火狐鼠标滚轮兼容问题。

3.4K20

游戏中怎么实现滚动数字?Cocos Creator 实现

效果预览 ▌滚动数字效果预览,位数设置:10,初始值:0,测试时,把显示数字手动修改为 1234567890 效果,#免费提供代码#,具体获取方法,参考文章结尾部分。 ?...▌RollNumber 组件支持显示位数、运动速率设置,使用时,需要设置每一位数字显示宽度 width(注意不是所有位数宽度),还需要设置 0-9 每个数字纹理图片,并对应上数组下标,如下图所示...实现原理 ▌具体原理是,每一位一开始把 0-9-0 数字竖直方向拼接,都置于 Layout 组件内,从上到下排列,需要显示区域通过遮罩显示,其他不需要显示部位就不会显示出来,当需要显示指定数字时,改变父节点纵轴坐标实现需要数字显示...▌考虑到数字长度可能会发生变化,使用节点池可以提升效率,需要时候,从节点池获取,如果节点池是空,重新生成。...▌数字运动距离有长有短,计算运动时间时,需要根据偏移量计算运动时间,以达到每一位在相同时间内完成数字变化。

1.8K10

纯css实现单张图片无限循环无缝滚动

一、用js setInterval定时器实现 js实现要通过不断改变定位、复制图片方式来做,效果极其不稳定 二、用css3 animation动画实现 需求1动画: @-webkit-keyframes...注意: 1、前提是把一张图片复制成3张,以实现无缝滚动,网上看了很多人此类无缝循环滚动方法,实现出来之后,每次回到起点都会有跳动感觉,这里经过摸索,给动画上移距离设为图片高度,就不会有跳动问题了...,完美无限循环+无缝滚动; 2、图片每停3s滚动一次,且每次刚好停在正中间,上线留衔接图片距离相等,这里就要计算一下,每次动画上移距离= 图片实际显示高度-(所在区域总高度-上间距高度)。...以下是图片滚动js,如果要实现动态获取图片高度,则需要写下面的js: function addKeyFrames(height,offsetHeight){ let style = document.createElement...,adLeftHeight); } } 以上js对应html: <div class="image-box"

3.5K30
领券