纯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 相关文章推荐
用js统计用户下载网页所需时间的脚本
Oct 15 Javascript
ie下jquery.getJSON的缓存问题的处理方法
Mar 29 Javascript
jQuery让控件左右移动的三种实现方法
Sep 08 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
Jul 26 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
Sep 14 Javascript
js中实现字符串和数组的相互转化详解
Jan 24 Javascript
批量下载对路网图片并生成html的实现方法
Jun 07 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
AngularJS入门教程之过滤器用法示例
Nov 02 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
Dec 08 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
Nov 20 Javascript
webpack-dev-server远程访问配置方法
Feb 22 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
set_include_path在win和linux下的区别
2008/01/10 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
团队激励口号
2014/06/06 职场文书
文明礼仪标语
2014/06/13 职场文书
小学生植树节活动总结
2014/07/04 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
先进个人推荐材料
2014/12/29 职场文书