基于JS实现无缝滚动思路及代码分享


Posted in Javascript onJune 07, 2016

原理:

1.给ul一个绝对定位使其脱离文档流,left设置为0,把图片塞进ul里,编写一个“移动"函数,函数功能能够使ul的left以一个正速度向右跑动,

2.设置一个定时器,让"移动"函数每30(参数可变)毫秒执行一次

3.因为ul的长度会“跑”完,此时可以使ul的content也就是img增加一倍,

oUl.innerHTML +=oUl.innerHTML;

4.此时因为ul的content增加,其width也会随着增大,根据实际项目展示图片数量可能改动或不确定性,

oUl.style.width = oLi.length*oLi[0].offsetWidth+'px';

5.往“移动”函数里增添代码。

5.1此时ul向右移动,判断当ul的offsetLeft>0时,把ul向左拉“一半ul的宽度”,也就是使ul能够向右一直无限制移动

if(oUl.offsetLeft>0){
oUl.style.left = -oUl.offsetWidth/2+'px';
}

5.2当ul向左移动,其offsetLeft跑了ul一半的宽度时,把整个ul拉回至初始的left:0;

if (oUl.offsetLeft<-oUl.offsetWidth/2) {
oUl.style.left = 0; 
}

上代码:

html:

<div id="box">
<ul>
<li><a href="#"><img src="1.jpg" /></a></li>
<li><a href="#"><img src="2.jpg" /></a></li>
<li><a href="#"><img src="3.jpg" /></a></li>
<li><a href="#"><img src="4.jpg" /></a></li>
</ul>
</div>

css:

* {margin: 0;padding: 0;}
#box{ width: 480px; height: 110px; border: 1px red solid; margin: 100px auto;overflow: hidden; position: relative; }
#box ul{ position: absolute; left: 0; top: 5px;}
#box ul li{list-style: none; float: left; width: 100px; height: 100px; padding-left: 16px; }
#box ul li img{width: 100px; height: 100px;}

js:

<script>
window.onload = function(){
var oDiv = document.getElementById('div1');
var oUl = oDiv.getElementsByTagName('ul')[0];
var oLi = oUl.getElementsByTagName('li');
var aA = document.getElementsByTagName('a');
var iSpeed = 10; //让ul开始就具有一个速度走动 
oUl.innerHTML +=oUl.innerHTML; 
oUl.style.width = oLi.length*oLi[0].offsetWidth+'px'; 
aA[0].onclick = function(){
iSpeed = -10;
};
aA[1].onclick = function(){
iSpeed = 10;
};
function fnMove(){
if (oUl.offsetLeft<-oUl.offsetWidth/2) { //负数是因为ul的left是负数 

oUl.style.left = 0;
}
else if(oUl.offsetLeft>0){ oUl.style.left = -oUl.offsetWidth/2+'px'; 
} 
oUl.style.left = oUl.offsetLeft+iSpeed+'px'; //整个ul向右移动 
};
var timer = null; 
clearInterval(timer);
timer = setInterval(fnMove,30);
oUl.onmouseover = function(){
clearInterval(timer);
};
oUl.onmouseout = function(){
timer = setInterval(fnMove,30); //当鼠标移开的时候执行这个定时器
};
};
</script>

以上所述是小编给大家分享的基于JS实现无缝滚动思路及代码,希望能够帮助到大家,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
两个JavaScript jsFiddle JSBin在线调试器
Mar 14 Javascript
基于jquery的tab切换 js原理
Apr 01 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
Apr 14 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
javascript跨域的4种方法和原理详解
Apr 08 Javascript
javascript面向对象之this关键词用法分析
Jan 13 Javascript
AngularJs 国际化(I18n/L10n)详解
Sep 01 Javascript
Javascript使用uploadify来实现多文件上传
Nov 16 Javascript
完美实现js焦点轮播效果(一)
Mar 07 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 Javascript
JS指定音频audio在某个时间点进行播放
Nov 28 Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 #Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 #Javascript
PassWord输入框代码分享
Jun 07 #Javascript
Bootstrap学习笔记之css组件(3)
Jun 07 #Javascript
JavaScript判断数组重复内容的两种方法(推荐)
Jun 06 #Javascript
JavaScript数组的定义及数字操作技巧
Jun 06 #Javascript
浅析$.getJSON异步请求和同步请求
Jun 06 #Javascript
You might like
小文件php+SQLite存储方案
2010/09/04 PHP
深入php数据采集的详解
2013/06/02 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
解析php中const与define的应用区别
2013/06/18 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
php批量修改表结构实例
2017/05/24 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
python中__call__方法示例分析
2014/10/11 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
房产销售经理职责
2013/12/20 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android