简单实现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 相关文章推荐
javascript firefox兼容ie的dom方法脚本
May 18 Javascript
Prototype Hash对象 学习
Jul 19 Javascript
基于JQuery实现异步刷新的代码(转载)
Mar 29 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
Dec 02 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
Jun 04 Javascript
jQuery实现菜单栏导航效果
Aug 15 jQuery
使用vuex的state状态对象的5种方式
Apr 19 Javascript
vue路由组件按需加载的几种方法小结
Jul 12 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 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中动态显示签名和ip原理
2007/03/28 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
Vue异步加载about组件
2017/10/31 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
python日志logging模块使用方法分析
2019/05/23 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
为什么python比较流行
2020/06/19 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
Born鞋子官网:Born Shoes
2017/04/06 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
美容院考勤制度
2014/01/30 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
2014年党建工作总结
2014/11/11 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
留学推荐信中文范文
2015/03/26 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
图文详解nginx日志切割的实现
2022/01/18 Servers
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA