简单实现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 相关文章推荐
Lazy Load 延迟加载图片的 jQuery 插件
Feb 06 Javascript
JS获取鼠标坐标的实例方法
Jul 18 Javascript
简洁Ajax函数处理(示例代码)
Nov 15 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
Jun 14 Javascript
Javascript封装id、class与元素选择器方法示例
Mar 13 Javascript
详解用webpack把我们的业务模块分开打包的方法
Jul 20 Javascript
jQuery-ui插件sortable实现自由拖动排序
Dec 01 jQuery
Vue使用NProgress进度条的方法
Sep 21 Javascript
js实现tab栏切换效果
Aug 02 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
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版(3)
2006/10/09 PHP
dedecms中常见问题修改方法总结
2007/03/21 PHP
PHP 文件系统详解
2012/09/13 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
js+css在交互上的应用
2010/07/18 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
vue组件实例解析
2017/01/10 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
python多线程并发实例及其优化
2019/06/27 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
python socket 聊天室实例代码详解
2019/11/14 Python
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
文案策划求职信
2014/04/14 职场文书
行政管理专业求职信
2014/07/06 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
教育实习指导教师评语
2014/12/31 职场文书
2015年重阳节主持词
2015/07/04 职场文书
新郎新娘致辞
2015/07/31 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
Python开发简易五子棋小游戏
2022/05/02 Python
Springboot中如何自动转JSON输出
2022/06/16 Java/Android
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS