JS无缝滚动效果实现方法分析
2016-12-21 09:01
676 查看
本文实例讲述了JS无缝滚动效果实现方法。分享给大家供大家参考,具体如下:
效果:
1.默认缓慢往左滚动
2.放到左箭头上还是向左滚动,放到右箭头上向右滚动
3.放到图片上停止滚动,移出继续滚动
思路:
1.计算图片列表ul的宽度
2.开启定时器,使其向左边距不断增大,造成向左运动的效果
3.图片列表复制一份,向左移动时,当左边距大于一份的宽度时,把它的左边距拉回到0。向右移动时,当左边距大于0时,把它的左边距拉到整个两份图片列表一半的宽度(即一份的宽度)。(拉的瞬间很快,用户察觉不到,造成一种无缝滚动的假象)
4.offsetLeft值的正负决定往哪边移动
5.放到图片上停止这个定时器,移开再开启
window.onload=function(){ var odiv=document.getElementById('div'); var oul=odiv.getElementsByTagName('ul')[0]; var oli=oul.getElementsByTagName('oul'); var btn=document.getElementsByTagName('btn'); var ispeed=-1; var timer=null; oul.innerHTML+=oul.innerHTML; //图片列表复制一份 oul.style.width=oli[0].offsetWidth*oli.length+'px'; //不算出ul的宽度的话,运动过程中后面的会先出现再加载图片,有一种不流畅感,切图片过多会分行,由外面的div决定宽度 timer=setInterval(function(){ oul.style.left=oul.offsetLeft+ispeed+'px'; //offsetLeft输出的是数字不带单位,右边也用oul.style.left输出的是字符串,而不是数值,而且它取得是行间样式,无用 if(oul.offsetLeft<-oul.offsetWidth/2){ //判断时也可以用.style.left或.style.width?(不确定) oul.style.left=0; } else if(oul.offsetLeft>0){ oul.style.left=-oul.offsetWidth/2; } ),30}; btn[0].onmouseover=function(){ ispeed=-1; }; btn[1].onmouseover=function(){ ispeed=1; }; oul.onmouseover=function(){ clearInterval(timer); }; oul.onmouseout=function(){ timer=setInterval(function(){ oul.style.left=oul.offsetLeft+ispeed+'px'; if(oul.offsetLeft<-oul.offsetWidth/2){ oul.style.left=0; } else if(oul.offsetLeft>0){ oul.style.left=-oul.offsetWidth/2; } ),30}; //如果把速度变大,而定时器的时间也变大是否可以达到相同效果呢?答案是不能。会变成一卡一卡 }; };
注:这样子取得的宽度是不包含margin的,所以图片间边距的写法可以是li的宽度大于img的宽度,li的宽度-img的宽度,就是两边的边距和
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 无缝滚动效果 js可以实现
- Jquery与JS两种方法仿twitter/新浪微博 高度自适应无缝滚动实现代码
- 原生Js无缝滚动效果的简单实现
- JS实现淡入淡出图片效果的方法分析
- marquee+js实现某个区域的“无缝滚动效果”
- JS平滑无缝滚动实现———实现首页广告自动滚动效果(附实例)
- JS实现图片滚动(无缝、平滑、上下左右滚动)效果
- 简单实现js间歇或无缝滚动效果
- JS+HTML5手机开发之滚动和惯性缓动实现方法分析
- JS实现的N多简单无缝滚动代码(包含图文效果)
- JS与HTML结合使用marquee标签实现无缝滚动效果代码
- 走马灯效果代码js appendChild实现的无缝滚动
- 简单实现js无缝滚动效果
- marquee+js实现某个区域的“无缝滚动效果”
- JS平滑无缝滚动效果的实现代码
- js实现简单易用的上下无缝滚动效果
- JQuery插件Marquee.js实现无缝滚动效果
- JS实现图片无缝滚动特效;附addEventListener()方法、offsetLeft和offsetWidth属性。
- JS实现图片无缝滚动效果
- js实现可控制左右方向的无缝滚动效果