纯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 相关文章推荐
node.js中的favicon.ico请求问题处理
Dec 15 Javascript
JavaScript的9种继承实现方式归纳
May 18 Javascript
不想让浏览器运行javascript脚本的方法
Nov 20 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
Sep 23 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
Dec 02 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
Jul 05 Javascript
React教程之Props验证的具体用法(Props Validation)
Sep 04 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
Mar 09 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 Javascript
详解vue微信网页授权最终解决方案
Jun 16 Javascript
详解微信小程序中var、let、const用法与区别
Jan 11 Javascript
js实现星星海特效的示例
Sep 28 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针对数字的加密解密类
2014/03/20 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
Python实现统计文本文件字数的方法
2017/05/05 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
python 标准差计算的实现(std)
2019/07/29 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
塔吉特百货公司官网:Target
2017/04/27 全球购物
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
《姥姥的剪纸》教学反思
2014/02/25 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
门店业绩提升方案
2014/06/08 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL
nginx 配置缓存
2022/05/11 Servers