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


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 相关文章推荐
将函数的实际参数转换成数组的方法
Jan 25 Javascript
jquery 学习笔记一
Apr 07 Javascript
jquery DOM操作 基于命令改变页面
May 06 Javascript
js实现的点击数量加一可操作数据库
May 09 Javascript
超全面的JavaScript开发规范(推荐)
Jan 21 Javascript
JS实现汉字与Unicode码相互转换的方法详解
Apr 28 Javascript
JavaScript数据结构学习之数组、栈与队列
May 02 Javascript
JS判断时间段的实现代码
Jun 14 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
vue获取验证码倒计时组件
Aug 26 Javascript
如何实现iframe父子传参通信
Feb 05 Javascript
js模拟实现百度搜索
Jun 28 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
PHP多个文件上传到服务器实例
2014/10/29 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
Python中的zip函数使用示例
2015/01/29 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Python Django view 两种return的实现方式
2020/03/16 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
课外科技活动总结
2014/08/27 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
高中校园广播稿
2014/10/21 职场文书
爱的承诺书
2015/01/20 职场文书