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


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读取RSS数据
Jan 20 Javascript
JavaScript 自动完成脚本整理(33个)
Oct 20 Javascript
用js模拟JQuery的show与hide动画函数代码
Sep 20 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
Aug 11 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
Sep 19 Javascript
酷炫jQuery全屏3D焦点图动画效果
Mar 22 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
Nov 07 Javascript
JS正则表达式验证密码格式的集中情况总结
Feb 23 Javascript
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
vuejs选中当前样式active的实例
Aug 22 Javascript
详解使用WebPack搭建React开发环境
Aug 06 Javascript
JS代码实现页面切换效果
Jan 10 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.MVC的模板标签系统(五)
2006/09/05 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
JavaScript 拖拉缩放效果
2008/12/10 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
javascript表单验证大全
2015/08/12 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
简单实现js浮动框
2016/12/13 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
详解python中的装饰器
2018/07/10 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
python实现函数极小值
2019/07/10 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
Python自带的IDE在哪里
2020/07/01 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
事业单位接收函
2014/01/10 职场文书
小学家长意见怎么写
2015/06/03 职场文书
大学班干部竞选稿
2015/11/20 职场文书
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python