简单实现js间歇或无缝滚动效果


Posted in Javascript onJune 29, 2016

间歇、无缝滚动效果(用gif录制的效果不是很好,有兴趣的可以down代码),具体内容如下

简单实现js间歇或无缝滚动效果

代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>无缝滚动</title>
 <style>
  *{margin:0;padding:0;}
  .box{width: 500px;height: 400px;margin:40px auto;background: #ccc;overflow: hidden;}
  .block{position: relative;width: 500px;height: 400px;overflow: hidden;}
  .item{height: 40px;background: red;color: #fff;line-height: 40px;text-align: center;}
  .item:nth-child(2n){background: #000}
 </style>
 <script>
  var scrollUp=(function(){
   return function(json){
    var objScroll = document.getElementById(json.id);
    objScroll.scrollTop = 0;
    objScroll.innerHTML += objScroll.innerHTML;
    if(json.on){
     function scrollIng(){
      if(objScroll.scrollTop >= objScroll.scrollHeight) {
       objScroll.scrollTop = 0;
      }else{
       objScroll.scrollTop ++; 
      } 
     }
     var myScroll = setInterval(function(){scrollIng()},30);
     objScroll.onmouseover = function(){
      clearInterval(myScroll);
     }
     objScroll.onmouseout = function(){
      myScroll = setInterval(function(){scrollIng()},30);
     }
    }else{
     var timer;
     function startScroll(){
      timer=setInterval(function(){scrollUp()},30);
      objScroll.scrollTop++;
     }
     function scrollUp(){
      if(objScroll.scrollTop % json.height==0){
       clearInterval(timer);
       setTimeout(startScroll,2000);
      }else{
       objScroll.scrollTop++;
       if(objScroll.scrollTop >= objScroll.scrollHeight/2){
        objScroll.scrollTop =0;
       }
      }
     }
     setTimeout(startScroll,1000);
    }
   }
  })()
  window.onload=function(){
   //on:间歇滚动/无缝滚动 height:间歇滚动的高度
   scrollUp({on:true,id:'block'});
   scrollUp({id:'block2',height:120});
  }
  
 </script>
</head>
<body>
 <div class="box">
  <div class="block" id="block">
   <div class="item">1无缝滚动</div>
   <div class="item">2无缝滚动</div>
   <div class="item">3无缝滚动</div>
   <div class="item">4无缝滚动</div>
   <div class="item">5无缝滚动</div>
   <div class="item">6无缝滚动</div>
   <div class="item">7无缝滚动</div>
   <div class="item">8无缝滚动</div>
   <div class="item">9无缝滚动</div>
   <div class="item">10无缝滚动</div>
   <div class="item">11无缝滚动</div>
   <div class="item">12无缝滚动</div>
   <div class="item">13无缝滚动</div>
   <div class="item">14无缝滚动</div>
   <div class="item">15无缝滚动</div>
  </div>
 </div>
 <div class="box">
  <div class="block" id="block2">
   <div class="item">1间歇滚动</div>
   <div class="item">2间歇滚动</div>
   <div class="item">3间歇滚动</div>
   <div class="item">4间歇滚动</div>
   <div class="item">5间歇滚动</div>
   <div class="item">6间歇滚动</div>
   <div class="item">7间歇滚动</div>
   <div class="item">8间歇滚动</div>
   <div class="item">9间歇滚动</div>
   <div class="item">10间歇滚动</div>
   <div class="item">11间歇滚动</div>
   <div class="item">12间歇滚动</div>
   <div class="item">13间歇滚动</div>
   <div class="item">14间歇滚动</div>
   <div class="item">15间歇滚动</div>
  </div>
 </div>
</body>
</html>

注意点:
1.盒子块要css 溢出隐藏:overflow:hidden
2.有两个功能:间歇滚动/无缝滚动
3.先复制一块一模一样的代码,无缝滚动:执行定时器一直增加scrollTop值,当scrollTop值大于盒子高度,在设置scrollTop为0,重新来过。间歇滚动在此基础上加了setTimeout,间歇执行,在scrollTop到达指定的height停止
4.疑问:代码中setInterval(function(){scrollIng()},30);这样写才可以执行,setInterval('scrollIng()',30);这样就不行,有没有大神指导下,两者有啥区别?是啥机制?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
jquery文本框中的事件应用以输入邮箱为例
May 06 Javascript
js如何判断用户是否是用微信浏览器
Jun 05 Javascript
js事件监听器用法实例详解
Jun 01 Javascript
浅谈javascript中基本包装类型
Jun 03 Javascript
原生js获取元素样式的简单方法
Aug 06 Javascript
Vue.js学习之过滤器详解
Jan 22 Javascript
Angular 5.0 来了! 有这些大变化
Nov 15 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
Apr 26 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
Sep 26 Javascript
js精准的倒计时函数分享
Jun 29 #Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
Jun 29 #Javascript
RequireJS多页面应用实例分析
Jun 29 #Javascript
全面了解JS中的匿名函数
Jun 29 #Javascript
大型JavaScript应用程序架构设计模式
Jun 29 #Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 #Javascript
JavaScript中闭包的写法和作用详解
Jun 29 #Javascript
You might like
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
jQuery 渐变下拉菜单
2009/12/15 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
AngularJS语法详解
2015/01/23 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
Python读大数据txt
2016/03/28 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
python 6种方法实现单例模式
2020/12/15 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
2014年消防工作实施方案
2014/02/20 职场文书
给老婆的保证书范文
2014/04/28 职场文书
培训班通知
2015/04/25 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
Python基础之pandas数据合并
2021/04/27 Python
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android