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基本概念初级讲解论坛贴的学习记录
Feb 22 Javascript
js中的值类型和引用类型小结 文字说明与实例
Dec 12 Javascript
jquery中防刷IP流量软件影响统计的一点对策
Jul 10 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
js中的内部属性与delete操作符介绍
Aug 10 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
Aug 27 Javascript
JavaScript类型系统之基本数据类型与包装类型
Jan 06 Javascript
window.onerror()的用法与实例分析
Jan 27 Javascript
Node.js复制文件的方法示例
Dec 29 Javascript
详解AngularJs ui-router 路由的简单介绍
Apr 26 Javascript
Vue按需加载的具体实现
Dec 02 Javascript
微信小程序onShareTimeline()实现分享朋友圈
Jan 07 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生成随机数或者字符串的代码
2008/09/05 PHP
php查询ip所在地的方法
2014/12/05 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
jQuery ajax cache缓存问题
2010/07/01 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
由面试题加深对Django的认识理解
2019/07/19 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
python中的插入排序的简单用法
2021/01/19 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
小区停车场管理制度
2014/01/27 职场文书
专科生就业求职信
2014/06/22 职场文书
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js