原生js实现无限循环上下滚动公告
说到滚动,想到的应该就是跑马灯效果。当然在网上有很多种实现方式,今天就用原生js来实现一个简单的上下无限循环滚动公告吧,代码不多,而且容易理解。无需做动画,看起来却有点动画效果。
第一步:(准备)新建一个html文件,内容如下
第二步js脚本:
第三步:运行测试,运行效果:
源码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试</title>
<style type="text/css">
/*样式设置*/
body{ margin: 0;}
#scroll-box{width: 200px;height: 22px;background: red;overflow:hidden;}
#scroll-box ul{margin: 0}
#scroll-box li{color: #fff}
</style>
</head>
<body>
<!-- 滚动内容部分 -->
<div id=scroll-box>
<ul>
<li>第一条公告</li>
<li>第二条公告</li>
<li>第三条公告</li>
<li>第四条公告</li>
</ul>
<ul></ul>
</div>
<!-- js部分 -->
<script type="text/javascript">
var box = document.getElementById('scroll-box')
var parent = document.getElementsByTagName('ul')[0]
var parent2 = document.getElementsByTagName('ul')[1]
parent2.innerHTML = parent.innerHTML
/*启动定时器*/
var timer = setInterval(autoScrollLine,30)
/*单行向上滚动效果*/
function autoScrollLine() {
/*判断滚动内容是否已经滚完,滚完了则滚动的值重新设置到0
否则就每隔30毫秒向上滚动1px*/
if(box.scrollTop>=parent.offsetHeight){
box.scrollTop=0;
}else{
box.scrollTop++;
}
/*判断滚动的距离刚好为一条公告的高度时停掉定时器,
隔1s之后重新启动定时器即可实现公告滚动停留效果 */
if(box.scrollTop%box.offsetHeight==0){
clearInterval(timer)
setTimeout(()=>{
timer = setInterval(autoScrollLine,30)
},1000)
}
}
</script>
</body>
</html>
总结:这里只是用自己想到的办法处理的可能有更好的写法,有些地方可以写得更好,如果有好的建议可以提出来。喜欢我的文章记得关注我哦,说不定以后有更多惊喜!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript—浏览器的渲染机制(25)
说明: 本文提到的浏览器均是指Chrome。 “script标签“指的都是普通的不带其他属性的外联javascript。 web性能优化的手段并不是非黑即白的,有些手段过头了反而降低性能,所以在讨论条件和结论的时候,虽然很多条件本身会带来其他细微的负面或正面影响,为了不使论述失去重点,不会扩展太开。 一、从一个面试题说起 面试前端的时候我喜欢问一些看上去是常识的问题。比如:为什么大家普遍把 <script src=""></script> 这样的代码放在body最底部?(为了沟通效率,我会提前和对方约定所有的讨论都以chrome为例)应聘者一般会回答:因为浏览器生成Dom树的时候是一行一行读HTML代码的,script标签放在最后面就不会影响前面的页面的渲染。 我很鸡贼地接着问:既然Dom树完全生成好后页面才能渲染出来,浏览器又必须读完全部HTML才能生成完整的Dom树,script标签不放在body底部是不是也一样? 这其实是个开放性的问题,里面涉及的概念的界定本身就很重要。 “页面渲染出来了” 指的是什么?严格来说,我的最后一问是有歧义的:我们需要统一一下什...
- 下一篇
JavaScript—模块化(26)
前言 随着 Web 技术的蓬勃发展和依赖的基础设施日益完善,前端领域逐渐从浏览器扩展至服务端(Node.js),桌面端(PC、Android、iOS),乃至于物联网设备(IoT),其中 JavaScript 承载着这些应用程序的核心部分,随着其规模化和复杂度的成倍增长,其软件工程体系也随之建立起来(协同开发、单元测试、需求和缺陷管理等),模块化编程的需求日益迫切。 JavaScript 对模块化编程的支持尚未形成规范,难以堪此重任;一时间,江湖侠士挺身而出,一路披荆斩棘,从刀耕火种过渡到面向未来的模块化方案; 概念 模块化编程就是通过组合一些__相对独立可复用的模块__来进行功能的实现,其最核心的两部分是__定义模块__和__引入模块__; 定义模块时,每个模块内部的执行逻辑是不被外部感知的,只是导出(暴露)出部分方法和数据;引入模块时,同步 / 异步去加载待引入的代码,执行并获取到其暴露的方法和数据; 刀耕火种 尽管 JavaScript 语言层面并未提供模块化的解决方案,但利用其可__面向对象__的语言特性,外加__设计模式__加持,能够实现一些简单的模块化的架构;经典的一个案例是...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题