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 相关文章推荐
javascript函数中的arguments参数
Aug 01 Javascript
JavaScript 原型链学习总结
Oct 29 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
Oct 17 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
May 18 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
Jul 19 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
Apr 11 Javascript
关于layui导航栏不展示下拉列表的解决方法
Sep 25 Javascript
js实现限定范围拖拽的示例
Oct 26 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
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python制作数据导入导出工具
2015/07/31 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
深入理解Python中的*重复运算符
2017/10/28 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
python实现飞机大战游戏
2020/10/26 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
python中@contextmanager实例用法
2021/02/07 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
澳大利亚百货公司:David Jones
2018/02/08 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
什么是Web Service?
2012/07/25 面试题
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
MySQL 开窗函数
2022/02/15 MySQL