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对象之间的转换 jQuery对象和原声DOM
Mar 07 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
May 11 Javascript
Javascript定义类(class)的三种方法详解
Mar 13 Javascript
学习JavaScript设计模式之责任链模式
Jan 18 Javascript
深入浅析JavaScript中的Function类型
Jul 09 Javascript
原生js实现电商侧边导航效果
Jan 19 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
js实现添加删除表格(两种方法)
Apr 27 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
Sep 04 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 Javascript
Vue组件基础用法详解
Feb 05 Javascript
vue脚手架项目创建步骤详解
Mar 02 Vue.js
使用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 zend 相对路径问题
2009/01/12 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
详解Angular 自定义结构指令
2017/06/21 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
vue登录注册实例详解
2019/09/14 Javascript
Python常用模块用法分析
2014/09/08 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
python定义类self用法实例解析
2020/01/22 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
办公室保洁员岗位职责
2013/12/02 职场文书
中文师范生自荐信
2014/01/30 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
农业生产宣传标语
2014/10/08 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
python 对图片进行简单的处理
2021/06/23 Python
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
bose降噪耳机音能消除人声吗
2022/04/19 数码科技
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android