基于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 相关文章推荐
Jquery Ajax.ashx 高效分页实现代码
Oct 20 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
Nov 12 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
jquery+正则实现统一的表单验证
Sep 20 Javascript
跟我学习javascript的函数和函数表达式
Nov 16 Javascript
BootStrap 动态表单效果
Jun 02 Javascript
vue-router+nginx 非根路径配置方法
Jun 30 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
element-ui中Table表格省市区合并单元格的方法实现
Aug 07 Javascript
vue中nextTick用法实例
Sep 11 Javascript
基于JS实现快速读取TXT文件
Aug 25 Javascript
详解如何在Javascript中使用Object.freeze()
Oct 18 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中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
[原创]php使用curl判断网页404(不存在)的方法
2016/06/23 PHP
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
五步轻松实现zTree的使用
2017/11/01 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python生成密码库功能示例
2017/05/23 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
python 杀死自身进程的实现方法
2019/07/01 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
Python实现名片管理系统
2020/02/14 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
Java程序员综合测试题
2014/04/25 面试题
化工机械应届生求职信
2013/11/04 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
《散步》教学反思
2014/03/02 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
保管员岗位职责
2015/02/14 职场文书
确保工程质量承诺书
2015/04/29 职场文书
员工表扬信怎么写
2015/05/05 职场文书