基于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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
匹配任意字符的正则表达式写法
Apr 29 Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 Javascript
javascript中递归的两种写法
Jan 17 Javascript
HTML5实现微信拍摄上传照片功能
Apr 21 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
vue模式history下在iis中配置流程
Apr 17 Javascript
vue的三种图片引入方式代码实例
Nov 19 Javascript
JavaScript中this函数使用实例解析
Feb 21 Javascript
关于antd tree 和父子组件之间的传值问题(react 总结)
Jun 02 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中操作ini配置文件的方法
2013/04/25 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
详解Django admin高级用法
2019/11/06 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
军训口号
2014/06/13 职场文书
出售房屋委托书范本
2014/09/24 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js