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 window.opener的用法分析
Apr 07 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
JavaScript内存管理介绍
Mar 13 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
JavaScript基础心法 数据类型
Mar 05 Javascript
Django+Vue跨域环境配置详解
Jul 06 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
vue中的过滤器实例代码详解
Jun 06 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
通过layer实现可输入的模态框的例子
Sep 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变量范围介绍
2012/10/15 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
js如何验证密码强度
2020/03/18 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
Python中isnumeric()方法的使用简介
2015/05/19 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
Python生成随机验证码的两种方法
2015/12/22 Python
python五子棋游戏的设计与实现
2019/06/18 Python
python字符串Intern机制详解
2019/07/01 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
Python中常见的数制转换有哪些
2020/05/27 Python
Python celery原理及运行流程解析
2020/06/13 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
市场营销毕业求职信
2014/08/07 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
深入详解JS函数的柯里化
2021/06/09 Javascript
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python