原生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 相关文章推荐
提高网站信任度的技巧
Oct 17 Javascript
Javascript typeof 用法
Dec 28 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
Nov 30 Javascript
javascript简单性能问题及学习笔记
Feb 04 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
详谈jQuery.load()和Jsp的include的区别
Apr 12 jQuery
Vue动态实现评分效果
May 24 Javascript
带你快速理解javascript中的事件模型
Aug 14 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
Aug 22 Javascript
Vue 开发必须知道的36个技巧(小结)
Oct 09 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 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判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
js获取多个tagname的节点数组
2013/09/22 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
安装dbus-python的简要教程
2015/05/05 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
先进党组织事迹材料
2014/12/26 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
PyTorch device与cuda.device用法
2022/04/03 Python