基于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 相关文章推荐
utf-8编码引起js输出中文乱码的解决办法
Jun 23 Javascript
js三种排序算法分享
Aug 16 Javascript
javascript获取web应用根目录的方法
Feb 12 Javascript
我的Node.js学习之路(四)--单元测试
Jul 06 Javascript
JavaScript简单获取系统当前时间完整示例
Aug 02 Javascript
基于ajax与msmq技术的消息推送功能实现代码
Dec 26 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
Apr 04 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
Vue单文件组件的如何使用方式介绍
Jul 28 Javascript
jQuery plugin animsition使用小结
Sep 14 jQuery
JSON获取属性值方法代码实例
Jun 30 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生成zip压缩文件的方法详解
2013/06/09 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
php精度计算的问题解析
2019/06/21 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
python删除服务器文件代码示例
2018/02/09 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
翻译学院毕业生自荐书
2014/02/02 职场文书
入党积极分子评语
2014/05/04 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
深入浅析React中diff算法
2021/05/19 Javascript
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL