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 相关文章推荐
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
javascript中的this详解
Dec 08 Javascript
快速学习jQuery插件 Form表单插件使用方法
Dec 01 Javascript
noty ? jQuery通知插件全面解析
May 18 Javascript
angularjs封装bootstrap时间插件datetimepicker
Jun 20 Javascript
Jqprint实现页面打印
Jan 06 Javascript
利用Js+Css实现折纸动态导航效果实例源码
Jan 25 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
解决Angular2 router.navigate刷新页面的问题
Aug 31 Javascript
详解vue-cli3 中跨域解决方案
Apr 10 Javascript
开发Node CLI构建微信小程序脚手架的示例
Mar 27 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实现HTTP断点续传的方法
2015/06/17 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
javascript里的条件判断
2007/02/27 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
如何使用python传入不确定个数参数
2020/02/18 Python
python和c语言哪个更适合初学者
2020/06/22 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
高考寄语大全
2014/04/08 职场文书
大学新闻系求职信
2014/06/03 职场文书
政府会议通知范文
2015/04/15 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
Python可视化神器pyecharts绘制水球图
2022/07/07 Python