原生js实现水平方向无缝滚动


Posted in Javascript onJanuary 10, 2017

水平方向无缝滚动

滚动支持图片,文字
原理 :一个大的盒子中放置两个盒子,通过设置offsetWidth,scrollLeft的关系来实现,而且还用到定时器函数setInterval,当手指移动上去定义滚动,离开继续滚动。兼容各大浏览器。
HTML代码

<div id="demo">
    <div id="demoin">
      <div id="demo1">
        <a href="">测试文字1</a>
        <a href="">测试文字2</a>
        <a href="">测试文字3</a>
        <a href="">测试文字4</a>
        <a href="">测试文字5</a>
        <a href="">测试文字7</a>
        <a href="">测试文字8</a>
        <a href="">测试文字9</a>
        <a href="">测试文字10</a>
        <a href="">测试文字11</a>
        <a href="">测试文字12</a>
        <a href="">测试文字13</a>
        <a href="">测试文字14</a>
        <a href="">测试文字15</a>
        <a href="">测试文字16</a>
        <a href="">测试文字17</a>
      </div>
      <div id="demo2"></div>
    </div>
  </div>

CSS代码

#demo{
      width:1000px;
      height:30px;
      overflow:hidden;
      line-height:30px;
      font-size:13px;
      font-family:'宋体';
      background:#ddd url(images/notice.png) no-repeat 25px center;
      color:#0C77CF;
      font-weight:bold;
      margin: 0 auto;
    }
    #demoin {
      width: 900px;
      height: 30px;
      margin: 0 auto;
      white-space: nowrap;
      overflow: hidden;
    }
    #demo #demo1, #demo #demo2{display:inline}

Javascript代码

window.onload = function(){
    scrollLeft();
  };
  function scrollLeft(){
    var speed = 20;
    var tab = document.getElementById('demoin');
    var tab1 = document.getElementById('demo1');
    var tab2 = document.getElementById('demo2');
    tab2.innerHTML = tab1.innerHTML;
    function Marquee(){
      if(tab2.offsetWidth - tab.scrollLeft <=0) {    
        tab.scrollLeft = 0;
      }else{
        tab.scrollLeft ++;
      }

    }
    var timer = setInterval(Marquee,speed);
    tab.onmouseover = function(){
      clearInterval(timer);
    };
    tab.onmouseout = function(){
      timer = setInterval(Marquee,speed);
    }
  }

效果图:

原生js实现水平方向无缝滚动

效果就是一直滚动。

注意:内容的宽度必须大于容器的宽度,否则无法滚动,测试文字一般是使用ajax后台获取。

Javascript 相关文章推荐
JS的Document属性和方法小结
Sep 17 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
JavaScript实现的数字与字符串转换功能示例
Aug 23 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
Dec 27 Javascript
vue2.0模拟锚点的实例
Mar 14 Javascript
详解JavaScript中的数组合并方法和对象合并方法
May 11 Javascript
js使用Promise实现简单的Ajax缓存
Nov 14 Javascript
Node.js 的 GC 机制详解
Jun 03 Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 Javascript
vue+iview实现手机号分段输入框
Mar 25 Vue.js
vue组件实例解析
Jan 10 #Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 #Javascript
React实现点击删除列表中对应项
Jan 10 #Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 #Javascript
微信小程序 slider 详解及实例代码
Jan 10 #Javascript
微信小程序 switch组件详解及简单实例
Jan 10 #Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 #Javascript
You might like
浅析php数据类型转换
2014/01/09 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
php表单处理操作
2017/11/16 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
javascript闭包的理解和实例
2010/08/12 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
vue生命周期实例小结
2018/08/15 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
Python实现的石头剪子布代码分享
2014/08/22 Python
使用Python构建Hopfield网络的教程
2015/04/14 Python
Python内建模块struct实例详解
2018/02/02 Python
分享vim python缩进等一些配置
2018/07/02 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
python 实现多维数组转向量
2019/11/30 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
名企HR怎样看待求职信
2014/02/23 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
业务员辞职信范文
2015/03/02 职场文书
旷工辞退通知书
2015/04/17 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
早上好问候语大全
2015/11/10 职场文书
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
Python+tkinter实现高清图片保存
2022/03/13 Python