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 setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
Jun 11 Javascript
非常有用的40款jQuery 插件推荐(系列二)
Dec 25 Javascript
js 浏览本地文件夹系统示例代码
Oct 24 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
Aug 04 Javascript
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
实用的Vue开发技巧
May 30 Javascript
JS实现从对象获取对象中单个键值的方法示例
Jun 05 Javascript
Vue数据双向绑定原理实例解析
May 15 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
Oct 26 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
使用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读注册表
2006/10/09 PHP
xml+php动态载入与分页
2006/10/09 PHP
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
php empty函数判断mysql表单是否为空
2010/04/12 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
javascript属性访问表达式用法分析
2015/04/25 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
js验证账户名是否重复
2020/05/26 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
促销活动总结模板
2014/07/01 职场文书
学校献爱心活动总结
2014/07/08 职场文书
家庭困难证明
2014/10/12 职场文书
库房管理员岗位职责
2015/02/12 职场文书
个人年终总结范文
2015/03/09 职场文书
如何写新闻稿
2015/07/18 职场文书
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技