JS平滑无缝滚动效果的实现代码


Posted in Javascript onMay 06, 2016

本文我们实现纯JS方式的滚动广告效果。

JS平滑无缝滚动效果的实现代码

先show一下成品:

首先是网页样式:

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

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

以上这篇JS平滑无缝滚动效果的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
可简单避免的三个JS发布错误的详细介绍
Aug 02 Javascript
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
javaScript实现滚动新闻的方法
Jul 30 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
jQuery实现的简单百分比进度条效果示例
Aug 01 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
Jan 05 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
vue 中动态绑定class 和 style的方法代码详解
Jun 01 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
Sep 21 Javascript
js校验开始时间和结束时间
May 26 Javascript
vue prop传值类型检验方式
Jul 30 Javascript
使用AJAX实现Web页面进度条的实例分享
May 06 #Javascript
JavaScript中的原型继承基础学习教程
May 06 #Javascript
jquery实现下拉框功能效果【实例代码】
May 06 #Javascript
浅析在javascript中创建对象的各种模式
May 06 #Javascript
jquery自定义插件——window的实现【示例代码】
May 06 #Javascript
javascript创建对象的几种模式介绍
May 06 #Javascript
前端性能优化及技巧
May 06 #Javascript
You might like
实现树状结构的两种方法
2006/10/09 PHP
PHP中PDO的错误处理
2011/09/04 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
Python给你的头像加上圣诞帽
2018/01/04 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
浅析python的Lambda表达式
2019/02/27 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python os模块在系统管理中的应用
2020/06/22 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
Europcar意大利:汽车租赁
2019/07/07 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
库房主管岗位职责
2013/12/31 职场文书
回门宴父母答谢词
2014/01/26 职场文书
连带责任保证书
2014/04/29 职场文书
医德医风演讲稿
2014/05/20 职场文书
质量管理标语
2014/06/12 职场文书
毕业论文致谢词
2015/05/14 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL