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算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
Javascript递归打印Document层次关系实例分析
May 15 Javascript
jQuery 如何给Carousel插件添加新的功能
Apr 18 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
May 19 Javascript
小程序实现多选框功能
Oct 30 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 Javascript
微信小程序使用map组件实现路线规划功能示例
Jan 22 Javascript
JSON的parse()方法介绍
Jan 31 Javascript
layui table数据修改的回显方法
Sep 04 Javascript
JavaScript Dom 绑定事件操作实例详解
Oct 02 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
Nov 06 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
PHP_MySQL教程-第一天
2007/03/18 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python 伯努利分布详解
2020/02/25 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
青年安全生产示范岗事迹材料
2014/05/04 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
婚宴新郎致辞
2015/07/28 职场文书
CAD实训总结范文
2015/08/03 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
Python 多线程处理任务实例
2021/11/07 Python
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL
Go语言入门exec的基本使用
2022/05/20 Golang