简单实现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 相关文章推荐
jquery 常用操作方法
Jan 28 Javascript
对table和ul实现js分页示例分享
Feb 24 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
Jun 18 Javascript
基于socket.io+express实现多房间聊天
Mar 17 Javascript
js带闹铃功能的倒计时代码
Sep 29 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
Nov 25 Javascript
js时间控件只显示年月
Jan 08 Javascript
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
Vue2.0 实现歌手列表滚动及右侧快速入口功能
Aug 08 Javascript
vue 地图可视化 maptalks 篇实例代码详解
May 21 Javascript
vue选项卡切换登录方式小案例
Sep 27 Javascript
vue中使用v-for时为什么不能用index作为key
Apr 04 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
用cookies来跟踪识别用户
2006/10/09 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
2018/04/26 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
上课睡觉检讨书
2014/01/28 职场文书
八一建军节感言
2014/02/28 职场文书
商场父亲节活动方案
2014/08/27 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
简历自我评价范文
2019/04/24 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers