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实现self的resend
Jul 22 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
Aug 20 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
node.js中的fs.fchownSync方法使用说明
Dec 16 Javascript
jQuery实现折线图的方法
Feb 28 Javascript
浅谈jquery事件处理
Apr 24 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
Nov 02 Javascript
web 前端常用组件之Layer弹出层组件
Sep 22 Javascript
jquery实现百叶窗效果
Jan 12 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
Aug 17 Javascript
vue实现局部刷新的实现示例
Apr 16 Javascript
Vuex实现购物车小功能
Aug 17 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远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
详解json在php中的应用
2018/09/30 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
如何运行Python程序的方法
2013/04/21 Python
零基础学Python(一)Python环境安装
2014/08/20 Python
window下eclipse安装python插件教程
2017/04/24 Python
Python logging模块用法示例
2018/08/28 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
实习生的自我评价
2014/01/08 职场文书
化学教学随笔感言
2014/02/19 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
综合办公室岗位职责
2015/04/11 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书