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


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 相关文章推荐
菜单效果
Oct 14 Javascript
JavaScript实现动态增加文件域表单
Feb 12 Javascript
javascript 带有滚动条的表格,标题固定,带排序功能.
Nov 13 Javascript
jQuery元素选择器用法实例
Dec 23 Javascript
JavaScript使用cookie实现记住账号密码功能
Apr 27 Javascript
JavaScript排序算法动画演示效果的实现方法
Oct 18 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 Javascript
jQuery中DOM节点的删除方法总结(超全面)
Jan 22 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 Javascript
vue实现在进行增删改操作后刷新页面
Aug 05 Javascript
5种 JavaScript 方式实现数组扁平化
Oct 05 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中json_encode与json_decode的区别
2020/07/15 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
python实现按任意键继续执行程序
2016/12/30 Python
python unittest实现api自动化测试
2018/04/04 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
会计助理的岗位职责
2013/11/29 职场文书
市场营销管理制度
2014/01/29 职场文书
小班下学期评语
2014/05/04 职场文书
英语感谢信范文
2015/01/20 职场文书
文明礼貌主题班会
2015/08/14 职场文书