javascript实现平滑无缝滚动


Posted in Javascript onAugust 09, 2020

本文我们实现纯JS方式的滚动广告效果,供大家参考,具体内容如下

先show一下成品:

javascript实现平滑无缝滚动

首先是网页样式:

#demo {
 background: #FFF;
 overflow:hidden;
 border: 1px dashed #CCC;
 width: 1280px;
 height:200px;
 }
 #demo img {
 border: 3px solid #F2F2F2;
 }
 #indemo {
 float: left;
 width: 800%;
 }
 #demo1 {
 float: left;
 }
 #demo2 {
 float: left;
 }

布局如下:

<div id="demo">
 <div id="indemo">
 <div id="demo1">
 <a href="#"><img src="banner.jpg" border="0" /></a>
 <a href="#"><img src="banner2.jpg" border="0" /></a>
 </div>
 <div id="demo2"></div>
 </div>
 </div>

具体的JS实现:

<script>
var speed=10;
var tab=document.getElementById("demo");
var tab1=document.getElementById("demo1");
var tab2=document.getElementById("demo2");
tab2.innerHTML=tab1.innerHTML;
function Marquee(){
if(tab2.offsetWidth-tab.scrollLeft==0)
tab.scrollLeft-=tab1.offsetWidth
else{

 tab.scrollLeft++;

 }
}
var MyMar=setInterval(Marquee,speed);
tab.onmouseover=function() {clearInterval(MyMar)};
tab.onmouseout=function() {MyMar=setInterval
(Marquee,speed)};
</script>

这里要注意的是:

scrollLeft代表页面利用滚动条滚动到右侧时,隐藏在滚动条左侧的页面的宽度。

offsetWidth 是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变。

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。

明白了这个具体的实现就好理解了。

实现的原理是这样的:首先将需要滚动的内容复制一份。当右侧的div显示的内容与左侧影藏的内容宽度相同时将父容器左侧影藏的内容显示出来,这样就实现了将左侧影藏的内容显示出来同时将右侧内容重新隐藏。如果右侧内容显示的部分少于左侧影藏的内容就继续讲父容器想左侧移动,实现隐藏。其中有一点需要注意的是,由于这里是将两张图片同时放入左侧,当右侧显示了一半时会将左侧影藏的完全显示出来,又因为右侧显示的内容与左侧的左边内容相同所以实现了循环滚动的效果。

这样平滑的滚动就实现了。

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
JQuery实现Ajax加载图片的方法
Dec 24 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
Jan 13 Javascript
jquery对象和DOM对象的任意相互转换
Feb 21 Javascript
js中遍历Map对象的方法
Jul 27 Javascript
JS获取一个未知DIV高度的方法
Aug 09 Javascript
js中document.referrer实现移动端返回上一页
Feb 22 Javascript
vue数字类型过滤器的示例代码
Sep 07 Javascript
bmob js-sdk 在vue中的使用教程
Jan 21 Javascript
vue-router相关基础知识及工作原理
Mar 16 Javascript
vue项目部署上线遇到的问题及解决方法
Jun 10 Javascript
浅析vue中的MVVM实现原理
Mar 04 Javascript
二维码条形码生成的JavaScript脚本库
Jul 07 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 #Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
May 05 #Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
May 05 #Javascript
jquery实现全选功能效果的实现代码
May 05 #Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 #Javascript
animate 实现滑动切换效果【实例代码】
May 05 #Javascript
JavaScript中各种引用类型的常用操作方法小结
May 05 #Javascript
You might like
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
如何使用php实现评委评分器
2015/07/31 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
javascript实用方法总结
2015/02/06 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
Python中的类学习笔记
2014/09/23 Python
构建Python包的五个简单准则简介
2015/06/15 Python
EM算法的python实现的方法步骤
2018/01/02 Python
Python自定义简单图轴简单实例
2018/01/08 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
后勤岗位职责
2013/11/26 职场文书
银行财务部实习生的自我鉴定
2013/11/27 职场文书
周鸿祎:教你写创业计划书
2013/12/30 职场文书
项目总经理岗位职责
2014/02/14 职场文书
网络技术专业推荐信
2014/02/20 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
小学亲子活动总结
2014/07/01 职场文书
自考生自我评价
2019/06/21 职场文书
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS