基于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 相关文章推荐
动态加载iframe
Jun 16 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
Oct 14 Javascript
探讨javascript是不是面向对象的语言
Nov 21 Javascript
jQuery表格插件ParamQuery简单使用方法示例
Dec 05 Javascript
JS实现弹性漂浮效果的广告代码
Sep 02 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
vue.js指令v-model实现方法
Dec 05 Javascript
创建一般js对象的几种方式
Jan 19 Javascript
从零学习node.js之模块规范(一)
Feb 21 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
webpack热模块替换(HMR)/热更新的方法
Apr 05 Javascript
jQuery实现电梯导航模块
Dec 22 jQuery
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&amp;MYSQL留言板源码
2020/07/19 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
js 格式化时间日期函数小结
2010/03/20 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python 编程速成(推荐)
2019/04/15 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
python系列 文件操作的代码
2019/10/06 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
python Shapely使用指南详解
2020/02/18 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
python代码实现猜拳小游戏
2020/11/30 Python
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
个人简历自我评价
2014/01/06 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
班级课外活动总结
2014/07/09 职场文书
导师鉴定意见
2015/06/05 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
Elasticsearch 聚合查询和排序
2022/04/19 Python