JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
本文实例讲述了JavaScript学习笔记之基于定时器实现图片无缝滚动功能。分享给大家供大家参考,具体如下:
一、无缝滚动理论基础
基础知识
1.setInterval(function,time)、clearInterval(timer)
setInterval()
方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval()
方法会不停地调用函数,直到 clearInterval()
被调用或窗口被关闭。由 setInterval()
返回的 ID 值可用作 clearInterval()
方法的参数。
clearInterval()
方法可取消由 setInterval()
设置的 timeout。
clearInterval()
方法的参数必须是由 setInterval()
返回的 ID 值。
2.offsetLeft与style.left的区别
offsetLeft 获取的是相对于父对象的左边距
left 获取或设置相对于 具有定位属性(position定义为relative)的父对象 的左边距
如果父div的position定义为relative,子div的position定义为absolute,那么子div的style.left的值是相对于父div的值,
这同offsetLeft是相同的,区别在于:
1. style.left 返回的是字符串,如28px,offsetLeft返回的是数值28,如果需要对取得的值进行计算,还用offsetLeft比较方便。
2. style.left是读写的,offsetLeft是只读的,所以要改变div的位置,只能修改style.left。
3. style.left的值需要事先定义,否则取到的值为空。而且必须要定义在html里,我做过试验,如果定义在css里,style.left的值仍然 为空,这就是我刚开始碰到的问题,总是取不到style.left的值。
offsetLeft则仍然能够取到,无需事先定义div的位置。
二、代码片段
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>无缝滚动</title> <style> *{ margin: 0; padding: 0; } #div2{ width: 400px; margin: 100px auto; } input{ margin:0 auto; text-align: center; margin-left: 80px; font-size: 40px; } #div1{ width: 712px; height: 108px; margin: 100px auto; position: relative; background-color: red; overflow: hidden; } #div1 ul{ position: absolute; left: 0; top: 0; } #div1 ul li{ float: left; width: 178px; height: 108px; list-style:none; } </style> <script> window.onload=function(){ var oDiv=document.getElementById('div1'); var oUl=document.getElementsByTagName('ul')[0]; var aLi=oUl.getElementsByTagName('li'); var lBtn=document.getElementById('lbtn'); var rBtn=document.getElementById('rbtn'); //将ul复制一份相加复制给ul(这样ul相当于有8张图片) oUl.innerHTML=oUl.innerHTML+oUl.innerHTML; oUl.style.width=aLi[0].offsetWidth*aLi.length+'px'; //speed控制图片移动方向和速度 var speed=2; function move(){ if(oUl.offsetLeft<-oUl.offsetWidth/2){ oUl.style.left=0; } if(oUl.offsetLeft>0) { oUl.style.left=-oUl.offsetWidth/2+'px'; } oUl.style.left=oUl.offsetLeft+speed+'px'; } var timer=setInterval(move,30); // 鼠标移进时,图片停止运动 oDiv.onmouseover=function(){ clearInterval(timer); }; //鼠标移出时,图片继续移动 oDiv.onmouseout=function(){ timer=setInterval(move,30); } //按钮控制移动方向 lBtn.onclick= function () { speed=-2; } rBtn.onclick=function(){ speed=2; } }; </script> </head> <body> <div id="div2" > <input type="button" value="向左" id="lbtn"/> <input type="button" value="向右" id="rbtn"/> </div> <div id="div1"> <ul> <li><img src="images/1.jpg" alt=""/></li> <li><img src="images/2.jpg" alt=""/></li> <li><img src="images/3.jpg" alt=""/></li> <li><img src="images/4.jpg" alt=""/></li> </ul> </div> </body> </html>
三、效果图
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:
- JavaScript学习笔记——简单无缝循环滚动展示图片的实现
- Javascript基础——利用定时器实现的图片无缝滚动(offsetLeft)
- jQuery实现的无缝广告图片左右滚动功能详解
- JavaScript学习笔记:用JavaScript部分小功能的实现
- 使用Javascript简单实现图片无缝滚动
- 基于javascript滚动图片具体实现
- JavaScript (定时器控件实现图片的 滚动 以及JavaScript实现跳转和关闭窗口)
- 【JavaScript】基于H5 canvas实现的画板绘图工具(类似你画我猜)——整合颜色选取、保存图片到本地功能
- 原生javascript实现图片无缝滚动效果
- javascript实现图片无缝滚动(scrollLeft的使用方法介绍)
- JavaScript实现图片无缝滚动效果
- html使用javascript实现图片滚动无缝拼接
- [Silverlight学习笔记]实现上传图片功能时遇到的问题
- Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能
- 基于javascript实现文字无缝滚动效果
- Javascript 实现图片无缝滚动
- javascript实现多张图片左右无缝滚动效果
- Andorid学习笔记:实现图片选择器功能(上)
- JavaScrip学习笔记(五)---定时器(一)实现图片无缝滚动
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)