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


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 相关文章推荐
jQuery DOM操作小结与实例
Jan 07 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
Mar 01 Javascript
js jq 单击和双击区分示例介绍
Nov 05 Javascript
js倒计时小程序
Nov 05 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
Jun 15 Javascript
解决jquery版本冲突的有效方法
Sep 02 Javascript
js实现向右横向滑出的二级菜单效果
Aug 27 Javascript
vue.js指令v-for使用及索引获取
Nov 03 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
Bootstrap模态框使用详解
Feb 15 Javascript
深入理解ES7的async/await的用法
Sep 09 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
Jan 16 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缓存的详解
2013/05/15 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
php生出随机字符串
2017/07/06 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
python去除所有html标签的方法
2015/05/05 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
python3中str(字符串)的使用教程
2017/03/23 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
对Python函数设计规范详解
2019/07/19 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
学院领导推荐信
2013/10/30 职场文书
外语系毕业生找工作的求职信
2013/11/28 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
2014年科普工作总结
2014/12/06 职场文书
党建工作汇报材料
2014/12/24 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
国庆庆典邀请函
2015/02/02 职场文书
python办公自动化之excel的操作
2021/05/23 Python