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 相关文章推荐
jquery实现点击TreeView文本父节点展开/折叠子节点
Jan 10 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
Jul 10 Javascript
jquery对元素拖动排序示例
Jan 16 Javascript
jquery选择器之基本过滤选择器详解
Jan 27 Javascript
使用javascript实现雪花飘落的效果
Jan 13 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
Aug 18 Javascript
浅谈 Vue v-model指令的实现原理
Jun 08 Javascript
JQuery.dataTables表格插件添加跳转到指定页
Jun 09 jQuery
JavaScript笛卡尔积超简单实现算法示例
Jul 30 Javascript
React+Webpack快速上手指南(小结)
Aug 15 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
May 01 Javascript
vue实现顶部菜单栏
Nov 08 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
基于php下载文件的详解
2013/06/02 PHP
php导出excel格式数据问题
2014/03/11 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
JavaScript中数组继承的简单示例
2015/07/29 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
chrome调试javascript详解
2015/10/21 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
python字符串的方法与操作大全
2018/01/30 Python
pandas-resample按时间聚合实例
2019/12/27 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
面试后的感谢信范文
2014/02/01 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
学雷锋倡议书
2015/01/19 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
排查Tomcat进程假死的问题
2022/05/06 Servers