基于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 相关文章推荐
一实用的实现table排序的Javascript类库
Sep 12 Javascript
JavaScript 检测浏览器和操作系统的脚本
Dec 26 Javascript
基于jquery的网页SELECT下拉框美化代码
Oct 28 Javascript
lyhucSelect基于Jquery的Select数据联动插件
Mar 29 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
May 03 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
Feb 19 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
Mar 31 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
浅谈mint-ui 填坑之路
Nov 06 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 Javascript
express异步函数异常捕获示例详解
Nov 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
PHP生成随机数的方法总结
2018/03/01 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
wxPython窗口的继承机制实例分析
2014/09/28 Python
开源Web应用框架Django图文教程
2017/03/09 Python
Python中的枚举类型示例介绍
2019/01/09 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
入党申请人的自我鉴定
2013/12/01 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
国际商务专业求职信
2014/07/15 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
内勤岗位职责
2015/02/10 职场文书
会计求职信怎么写
2015/03/20 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
《实心球》教学反思
2016/02/23 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书