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


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学习笔记(十七)js 优化
Feb 04 Javascript
jquery checkbox,radio是否选中的判断代码
Mar 20 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
Aug 27 Javascript
游览器中javascript的执行过程(图文)
May 20 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
JavaScript 学习笔记之操作符
Jan 14 Javascript
jQuery实现防止提交按钮被双击的方法
Mar 24 Javascript
JS实现购物车特效
Feb 02 Javascript
教你快速搭建Node.Js服务器的方法教程
Mar 30 Javascript
vue 优化CDN加速的方法示例
Sep 19 Javascript
微信小程序实现点击效果
Jun 21 Javascript
vue实现给div绑定keyup的enter事件
Jul 31 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
php简单分页类实现方法
2015/02/26 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
node实现登录图片验证码的示例代码
2018/04/20 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
python中的print()输出
2019/04/12 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
党支部书记先进事迹
2014/01/17 职场文书
数控个人求职信范文
2014/02/03 职场文书
鉴定评语大全
2014/05/05 职场文书
安全生产承诺书范文
2014/05/22 职场文书
孩子教育的心得体会
2014/09/01 职场文书
廉政承诺书范文
2015/04/28 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
MySQL中varchar和char类型的区别
2021/11/17 MySQL