基于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 相关文章推荐
JS查看对象功能代码
Apr 25 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
Dec 28 Javascript
IE中图片的onload事件无效问题和解决方法
Jun 06 Javascript
基于jQuery实现自动轮播旋转木马特效
Nov 02 Javascript
jQuery css() 方法动态修改CSS属性
Sep 25 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 Javascript
node实现基于token的身份验证
Apr 09 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
浅谈Vue SSR中的Bundle的具有使用
Nov 21 Javascript
JavaScript快速调试的两个技巧
Nov 04 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 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的输入输出流
2007/02/14 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP循环结构实例讲解
2014/02/10 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
ES6中定义类和对象的方法示例
2019/07/31 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
详解python中的线程
2018/02/10 Python
用python生成1000个txt文件的方法
2018/10/25 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
python编写简单端口扫描器
2019/09/04 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python