纯js实现无缝滚动功能代码实例


Posted in Javascript onFebruary 21, 2020

这篇文章主要介绍了纯js实现无缝滚动功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

HTML代码

<!--父容器要使用overflow: hidden;-->
<div id="imgsList" style="height:150px;width:980px;overflow: hidden;"> 
  <!--滚动容器-->
  <div id="marquee_self">
    <ul id="marquee_ul">
      <li><img src="" width="180px" height="100px"></li>
      <li><img src="" width="180px" height="100px"></li>
      <li><img src="" width="180px" height="100px"></li>
    </ul>
  </div>
</div>

CSS代码

#marquee_self *{
  margin: 0;
  padding: 0;
}
#marquee_self{
  width: 1620px;  //所有图片长度个数*width
  height: 100px;  //图片高度
  //margin: 100px auto; 居中
  background-color: #646464;
  position: relative;
  overflow: hidden;
}
#marquee_self ul{
  position:absolute;
  left:0;
  top:0;
  overflow: hidden; //li中超出部分隐藏掉
  background-color: #3b7796; //背景色用来看问题
}
#marquee_self ul li{
  float: left;  //左对齐变为图片水平
  width: 180px;  //图片宽度
  height: 100px; //图片高度
  list-style: none; //无间隙
}

JS代码

<script type="text/javascript">
  window.onload = function(){
    var oDiv = document.getElementById('marquee_self');  //容器节点
    var oUl = document.getElementById('marquee_ul');  //ul节点
    var speed = -2;  //初始化速度,默认往左

    oUl.innerHTML += oUl.innerHTML;//ul中图片内容翻倍
    var oLi= oUl.getElementsByTagName('li'); //获取ul节点下所有li集合
    oUl.style.width = oLi.length*180+'px';//设置ul的宽度翻倍后的宽度,使图片可以放下

    /*var oBtn1 = document.getElementById('btn_left'); 左移动按钮
    var oBtn2 = document.getElementById('btn_right'); 右移动按钮*/

    function move(){
      if(oUl.offsetLeft<-(oUl.offsetWidth/2)){  //向左滚动,当向左滚动超过总ul长度一半时
        oUl.style.left = 0;  //变为从头开始
      }

      if(oUl.offsetLeft > 0){    //向右滚动,当靠右的图1移出边框时
        oUl.style.left = -(oUl.offsetWidth/2)+'px';
      }

      oUl.style.left = oUl.offsetLeft + speed + 'px';  //图片移动
    }

    /*oBtn1.addEventListener('click',function(){  //向左移动按钮点击事件
      speed = -2;
    },false);
    oBtn2.addEventListener('click',function(){  //向右移动按钮点击事件
      speed = 2;
    },false);*/

    var timer = setInterval(move,30);//全局变量 ,保存返回的定时器

    oDiv.addEventListener('mouseout', function () { //鼠标移开添加计时器
      timer = setInterval(move,30);
    },false);
    oDiv.addEventListener('mousemove', function () { //鼠标移入清除定时器
      clearInterval(timer);
    },false);
  }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery.validate使用攻略 第一部
Jul 01 Javascript
javascript倒计时功能实现代码
Jun 07 Javascript
js几秒以后倒计时跳转示例
Dec 26 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 Javascript
原生js模拟淘宝购物车项目实战
Nov 18 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
jQuery中值得注意的trigger方法浅析
Dec 12 Javascript
微信小程序 页面跳转事件绑定的实例详解
Sep 20 Javascript
es6系列教程_ Map详解以及常用api介绍
Sep 25 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 Javascript
微信小程序 wxParse插件显示视频问题
Sep 27 Javascript
如何使JavaScript休眠或等待
Apr 27 Javascript
vue中实现动态生成二维码的方法
Feb 21 #Javascript
JS如何把字符串转换成json
Feb 21 #Javascript
简单了解JS打开url的方法
Feb 21 #Javascript
详解vue或uni-app的跨域问题解决方案
Feb 21 #Javascript
如何基于js判断浏览器版本
Feb 20 #Javascript
微信小程序webSocket的使用方法
Feb 20 #Javascript
Javascript Worker子线程代码实例
Feb 20 #Javascript
You might like
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
js的.innerHTML = &quot;&quot;IE9下显示有错误的解决方法
2013/09/16 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
python进行TCP端口扫描的实现
2018/12/21 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
就业推荐表自我鉴定范文
2014/03/21 职场文书
辅导员评语
2014/05/04 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
2015年招聘工作总结
2014/12/12 职场文书
节约用电倡议书
2015/04/28 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
详解redis分布式锁的这些坑
2021/05/19 Redis
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js