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 相关文章推荐
可兼容IE的获取及设置cookie的jquery.cookie函数方法
Sep 02 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
Dec 23 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
JS 对象属性相关(检查属性、枚举属性等)
Apr 05 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
Dec 08 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
Mar 02 Javascript
js控制文本框禁止输入特殊字符详解
Apr 07 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
Sep 24 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
vscode自定义vue模板的实现
Jan 27 Vue.js
基于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
PHP版自动生成文章摘要
2008/07/23 PHP
php 执行系统命令的方法
2009/07/07 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
使用Python快速制作可视化报表的方法
2019/02/03 Python
python写程序统计词频的方法
2019/07/29 Python
python tkinter基本属性详解
2019/09/16 Python
python函数定义和调用过程详解
2020/02/09 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
几款好用的python工具库(小结)
2020/10/20 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
什么是makefile? 如何编写makefile?
2012/08/08 面试题
制冷与电控专业应届生求职信
2013/11/11 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫