web实现图片滚动效果(html多张图片滚动)

web实现图片滚动效果,原文标题:web前端教程:js实现单张或多张图片持续无缝滚动。Javascript一种直译式脚本语言,是一种动态类

web实现图片滚动效果,原文标题:web前端教程:js实现单张或多张图片持续无缝滚动。

Javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

背景:

想要实现图片持续滚动,既然使用js,就千万不要加css动画、过渡等相关样式,如果想要滚动的平滑一下,可以一像素一像素的感动,则很平滑,如果加了过渡动画,当图片重置为0时,会有往回倒的动画效果,跟预期不符。

原理:

图片滚动原理同图片轮播原理,同样也适用于文字滚动等一系列滚动,通过复制最后一张图片或最后一堆文字插入第一行,或复制第一张图片或一堆文字插入在结尾,来实现无缝拼接,前提:1、必须是没有设置过渡动画的,2、重置为0的时候与当前已经滚动到的高度对于图片的位置而言肉眼看上去没变化。

实现:

html主要包含三块:

1、最外层盒子,用来展示滚动图的区域,overflow:hidden;

2、滚动的盒子,主要改变该盒子的定位值,来实现滚动,里面包含所有要滚动的图片或文字

3、包含图片或文字的盒子。

代码:

classRoll{

constructor(opts){

this.elem=opts.elem;//图片包含滚动长度的元素的

this.elemBox=opts.elemBox;//图片展示区域元素,为了获取展示区域的高度

this.direction=opts.direction;

this.time=opts.time;

this.init();

this.roll=this.roll.bind(this)

this.startRoll=this.startRoll.bind(this)

this.stopRoll=this.stopRoll.bind(this)

}

init(){

this.elemHeight=this.elem.offsetHeight;

this.elemHtml=this.elem.innerHTML;

this.elem.innerHTML=this.elem.innerHTML this.elemHtml this.elemHtml;

this.speed;

//如果向上滚或者向左滚动每次减1,向下滚或者向右滚动每次加1

if(this.direction==='top'||this.direction==='left'){

this.speed=-1;

}else{

this.speed=1;

}

}

roll(){

switch(this.direction){

case"top":

//如果滚动的盒子的top值超出元素的高度,则值为0

if(Math.abs(this.elemBox.offsetTop)>=this.elemHeight){

this.elemBox.style.top=0;

}else{

this.elemBox.style.top=this.elemBox.offsetTop this.speed 'px';

}

break;

case"bottom":

//如果滚动的盒子的bottom值超出元素的高度,则值为0

if(Math.abs(this.elemBox.offsetBottom)>=this.elemHeight){

this.elemBox.style.bottom=0;

}else{

this.elemBox.style.bottom=this.elemBox.offsetBottom this.speed 'px';

}

break;

case"left":

//如果滚动的盒子的left超出元素的高度,则置为0

if(Math.abs(this.elemBox.offsetLeft)>=this.elemHeight){

this.elemBox.style.left=0;

}else{

this.elemBox.style.left=this.elemBox.offsetLeft this.speed 'px';

}

break;

case"right":

//如果滚动的盒子的right超出元素的高度,则置为0

if(Math.abs(this.elemBox.offsetRight)>=this.elemHeight){

this.elemBox.style.right=0;

}else{

this.elemBox.style.right=this.elemBox.offsetRight this.speed 'px';

}

break;

default:

//默认向上滚动,如果滚动的盒子的top超出元素的高度,则置为0

if(Math.abs(this.elemBox.offsetTop)>=this.elemHeight){

this.elemBox.style.top=0;

}else{

this.elemBox.style.top=this.elemBox.offsetTop speed 'px';

}

}

}

stopRoll(){

clearInterval(this.scrollTimer)

}

startRoll(){

this.scrollTimer=setInterval(this.roll,this.time)

}

}

在1995年时,由Netscape公司的BrendanEich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。js实现单张或多张图片持续无缝滚动。

web实现图片滚动效果(html多张图片滚动)

开课吧Web前端教程

本文《web实现图片滚动效果(html多张图片滚动)》由网赚联盟( wangzhuan.org.cn )整理或原创,感谢您的阅读。

随机文章

友情链接交换
搜素引擎算法
关键词排名优化
网站内容优化
GEO培训
SEO小小课堂网
搜素引擎算法
关键词排名优化

百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:开课吧科科,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/387388.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注