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


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 相关文章推荐
js 利用className得到对象的实现代码
Nov 15 Javascript
自己写的Javascript计算时间差函数
Oct 28 Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 Javascript
Javascript实现可旋转的圆圈实例代码
Aug 04 Javascript
实例讲解JS中setTimeout()的用法
Jan 28 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 Javascript
简单实现JS计算器功能
Dec 21 Javascript
JavaScript手风琴页面制作
May 17 Javascript
Vue中保存用户登录状态实例代码
Jun 07 Javascript
vue select二级联动第二级默认选中第一个option值的实例
Jan 10 Javascript
JS判断数组里是否有重复元素的方法小结
May 21 Javascript
Vue+abp微信扫码登录的实现代码示例
Jan 06 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
php5中类的学习
2008/03/28 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
PHP中“=&gt;
2019/03/01 PHP
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
Python中偏函数用法示例
2018/06/07 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
python实现可逆简单的加密算法
2019/03/22 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
python中selenium库的基本使用详解
2020/07/31 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
党风廉政承诺书
2014/03/27 职场文书
学校教师读书活动总结
2014/07/08 职场文书
技术股份合作协议书
2014/10/05 职场文书
妇产科护理心得体会
2016/01/22 职场文书