原生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 相关文章推荐
JavaScript库 开发规则
Jan 31 Javascript
js Math 对象的方法
Sep 01 Javascript
JQuery对id中含有特殊字符的转义处理示例
Sep 06 Javascript
js操作label给label赋值及取label的值示例
Nov 07 Javascript
jQuery中append()方法用法实例
Dec 25 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
Feb 05 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
Aug 10 Javascript
node.js文件上传处理示例
Oct 27 Javascript
详解vue 实例方法和数据
Oct 23 Javascript
在一个页面实现两个zTree联动的方法
Dec 20 Javascript
从0搭建vue-cli4脚手架
Jun 17 Javascript
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
杏林同学录(五)
2006/10/09 PHP
php去除重复字的实现代码
2011/09/16 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
Python生成pdf文件的方法
2014/08/04 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
python 字典的打印实现
2019/09/26 Python
Python FFT合成波形的实例
2019/12/04 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
应届毕业生如何写求职信
2014/02/16 职场文书
党支部换届选举方案
2014/05/08 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby