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 相关文章推荐
javascript实现的距离现在多长时间后的一个格式化的日期
Oct 29 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
May 23 Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
Apr 16 Javascript
JS使用正则表达式除去字符串中重复字符的方法
Nov 05 Javascript
vue.js指令v-model实现方法
Dec 05 Javascript
js省市区级联查询(插件版&amp;无插件版)
Mar 21 Javascript
JS实现页面内跳转的简单代码
Sep 03 Javascript
Vue中的v-for循环key属性注意事项小结
Aug 12 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 Javascript
基于JavaScript实现年月日三级联动
Jun 22 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
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
实例解析php的数据类型
2018/10/24 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
小试JQuery的AutoComplete插件
2011/05/04 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
利用python爬取散文网的文章实例教程
2017/06/18 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
python实现按长宽比缩放图片
2018/06/07 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
python文件排序的方法总结
2020/09/13 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
大学生创业感言
2014/01/25 职场文书
绿色环保演讲稿
2014/05/10 职场文书
MySQL分区表管理命令汇总
2022/03/21 MySQL
Nginx HTTP跳转至HTTPS
2022/05/15 Servers
Python如何将list中的string转换为int
2022/07/15 Ruby
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL