纯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 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
用Javascript 获取页面元素的位置的代码
Sep 25 Javascript
iframe 异步加载技术及性能分析
Jul 19 Javascript
IE6下opacity与JQuery的奇妙结合
Mar 01 Javascript
window.navigate 与 window.location.href 的使用区别介绍
Sep 21 Javascript
js实现的后台左侧管理菜单代码
Sep 11 Javascript
AngularJS教程之MVC体系结构详解
Aug 16 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
Jun 15 Javascript
JS实现网页抢购功能(触发,终止脚本)
Nov 27 Javascript
js中数组对象去重的两种方法
Jan 18 Javascript
JS/CSS实现字符串单词首字母大写功能
Sep 03 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
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
JS 获取滚动条高度示例代码
2013/10/24 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
python中对数据进行各种排序的方法
2019/07/02 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
Django视图、传参和forms验证操作
2020/07/15 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
Pandas的数据过滤实现
2021/01/15 Python
如何用Python徒手写线性回归
2021/01/25 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
体育比赛口号
2014/06/09 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
nginx请求限制配置方法
2021/07/09 Servers
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers