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 相关文章推荐
jQuery 获取URL参数的插件
Mar 04 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
Aug 20 Javascript
JavaScript类属性的访问方式详解
Feb 11 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
Apr 14 Javascript
jQuery实现模拟flash头像裁切上传功能示例
Dec 11 Javascript
详解Web使用webpack构建前端项目
Sep 23 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
Jul 10 Javascript
javascript中的this作用域详解
Jul 15 Javascript
JavaScript获取时区实现过程解析
Sep 24 Javascript
vant时间控件使用方法详解
Dec 24 Javascript
JavaScript实现班级抽签小程序
May 19 Javascript
基于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
基于mysql的论坛(7)
2006/10/09 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python交互界面的退出方法
2019/02/16 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
Python descriptor(描述符)的实现
2020/11/15 Python
python实现按日期归档文件
2021/01/30 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
Java程序员面试题
2016/09/27 面试题
会计应聘求职信范文
2013/12/17 职场文书
工作交流会欢迎词
2014/01/12 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
linux下安装redis图文详细步骤
2021/12/04 Redis
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android