无缝滚动的简单实现代码(推荐)


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>

如有错误,欢迎指正。

以上这篇无缝滚动的简单实现代码(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Firefox window.close()的使用注意事项
Apr 11 Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
js中for in的用法示例解析
Dec 25 Javascript
javascript模拟枚举的简单实例
Mar 06 Javascript
js实现大转盘抽奖游戏实例
Jun 24 Javascript
Javascript实现获取及设置光标位置的方法
Jul 21 Javascript
JavaScript 性能优化小结
Oct 12 Javascript
浅谈angularjs module返回对象的坑(推荐)
Oct 21 Javascript
jquery滚动条插件slimScroll使用方法
Feb 09 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
Jul 21 Javascript
Bootstrap学习笔记之css样式设计(2)
Jun 07 #Javascript
AngularJS 如何在控制台进行错误调试
Jun 07 #Javascript
JQuery异步加载PartialView的方法
Jun 07 #Javascript
基于JS实现无缝滚动思路及代码分享
Jun 07 #Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 #Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 #Javascript
PassWord输入框代码分享
Jun 07 #Javascript
You might like
PHPUnit安装及使用示例
2014/10/29 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
对比分析json及XML
2014/11/28 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
Vue渲染函数详解
2017/09/15 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
在Python中使用Mako模版库的简单教程
2015/04/08 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
详解python内置模块urllib
2020/09/09 Python
python tkinter实现连连看游戏
2020/11/16 Python
美术专业个人自我评价
2014/01/18 职场文书
学校运动会广播稿
2014/10/11 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
教师求职自荐信
2015/03/26 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python