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


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 相关文章推荐
Javascript 不能释放内存.
Sep 07 Javascript
js 省地市级联选择
Feb 07 Javascript
js比较和逻辑运算符的介绍
Mar 10 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
Nov 26 Javascript
jquery实现公告翻滚效果
Feb 27 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
May 19 Javascript
JavaScript判断浏览器和hack滚动条的写法
Jul 23 Javascript
Vue的Flux框架之Vuex状态管理器
Jul 30 Javascript
WebSocket的通信过程与实现方法详解
Apr 29 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
Oct 25 Javascript
Vue 3.0 全家桶抢先体验
Apr 28 Javascript
vue数据字典取键值项目的字典问题
Apr 12 Vue.js
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
php array_search() 函数使用
2010/04/13 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
初识php MVC
2014/09/10 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
PHP PDO操作总结
2014/11/17 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
区分vue-router的hash和history模式
2020/10/03 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
[59:35]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第一场 1月8日
2021/03/11 DOTA
Python实现求一个集合所有子集的示例
2018/05/04 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
入团者的自我评价分享
2013/12/02 职场文书
创先争优个人承诺书
2014/08/30 职场文书
学雷锋的心得体会
2014/09/04 职场文书
java解析XML详解
2021/07/09 Java/Android