前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >信息滚动效果

信息滚动效果

作者头像
大M
发布2021-08-24 14:14:33
3.1K0
发布2021-08-24 14:14:33
举报
文章被收录于专栏:细说前端

关于滚动的那些事,相信不少的小伙伴都知道,在做网页动态效果时,时常有需求是关于滚动效果的实现的。在360或搜狐等门户网站的首页中,我们也时常见到这种效果。

以上是从360导航中截取的,都是信息滚动效果。今天我们要来实现下面这个小例子。效果可以有两种,分别是无缝滚动和间歇性无缝滚动。

首先是无缝滚动的效果。

以下是我简单的介绍这个例子的主要思路。就是先把1的内容复制出一个2的内容出来,这样就可以在滚动1内容要结束时,连上2内容的滚动,达到无缝滚动效果;然后当1内容刚好被滚动完时,马上把1内容跳到最开始的位置。这样就实现了可以一直滚动下去的效果了。

在开始前,我们要知道几个js的属性(很重要,要牢记!):

obj.scrollTop //返回子元素被滚动了多少像素(注意,obj为滚动元素的父元素)

obj.offsetHeight //返回元素的自身高度

obj.scrollHeight //返回 自身元素的高度+隐藏子元素的高度(注意,obj为滚动元素的父元素)

好了,开始码代码,首先是HTML结构和css样式:

效果如下:

接下来就是使用原生js让文字滚动起来了。

先获取整个box和内容con1,再复制一个内容出来

接着我们自定义一个函数scrollUp,在里面实现刚才说到的实现思路。具体是当被滚动出去的内容高度大于等于con1内容的高度,我们就将滚动出去的高度设置0;否则我们就继续给滚动自增,知道上面条件满足。

接着就设置一个setInterval函数了,来个50毫秒执行一次吧

这样,就实现了文字在box区域中的滚动效果了:

现在内容是在无缝滚动了,我们可以加个鼠标滑过时停止滚动,鼠标移出时继续滚动的效果。

这部分就很简单了,只是加了鼠标移入移出的事件而已,在里面设置清除定时器和执行定时器,完整代码如下:

接下来,我们来实现另一个效果,即间歇性循环滚动,就是比如滚动第一段内容后,停顿两秒,然后再继续滚动下一段内容,在停顿两秒......

当然,想到要停顿两秒,我们在脑海中就浮现出setTimeout这个函数了

接下来我们要改一下HTML结构,因为在上面的例子中,我们多写了一个ul结构,很多余,我们去掉这个ul:

现在就只剩下con1内容了,但我们还是可以再复制出一个con1顶替在con2位置上的,就是使用+=运算符。

接下来我们使用一个函数来执行一直滚动的角色。

接着实现角色中调用的scrollUp函数。

具体思路如下,先判断是否滚动了一段文字,如果是的话就清除掉time这个定时器,等两秒后再执行。如果还没滚动一段文字时,就继续滚动,直到符合条件。

这样就实现了间歇性滚动,接下来是实现无限循环滚动效果,跟一开始的那个demo的思路一样,当con1刚好完全滚动出去时,马上让其跳回原来的位置即可。

都完成了,最后启动一下startMove函数即可,我们还是一样用两秒来启动函数

完整代码如下:

好了,今天就到这里了,明天就是中秋了,在这儿祝各位都平平安安,与家人团团圆圆,幸福美满。

最后,别忘了要保持学习的习惯。。。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 javascript实例解析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档