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


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基本概念初级讲解论坛贴的学习记录
Feb 22 Javascript
javascript中的107个基础知识收集整理 推荐
Mar 29 Javascript
JS异常处理的一个想法(sofish)
Mar 14 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 Javascript
使用jQuery管理选择结果
Jan 20 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
Jun 12 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
Sep 04 Javascript
js实现全选和全不选
Jul 28 Javascript
js实现表格数据搜索
Aug 09 Javascript
js实现简单的无缝轮播效果
Sep 05 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
Oct 30 Javascript
ES5和ES6中类的区别总结
Dec 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
留言板翻页的实现详解
2006/10/09 PHP
php 分页类 扩展代码
2009/06/11 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
php实现的通用图片处理类
2015/03/24 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
jQuery中position()方法用法实例
2015/01/16 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
javascript实现连续赋值
2015/08/10 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
Python中的默认参数详解
2015/06/24 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python 显示数组全部元素的方法
2018/04/19 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
人事主管岗位职责范本
2013/12/04 职场文书
高中班长自我鉴定
2013/12/20 职场文书
《在家里》教后反思
2014/03/01 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
上学路上观后感
2015/06/16 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python