简单实现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 相关文章推荐
谷歌浏览器 insertCell与appendChild的区别
Feb 12 Javascript
jQuery学习3:操作元素属性和特性
Feb 07 Javascript
js 左右悬浮对联广告代码示例
Dec 12 Javascript
jquery实现具有嵌套功能的选项卡
Feb 12 Javascript
Jquery $when done then的用法详解
May 20 Javascript
学习vue.js条件渲染
Dec 03 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
Aug 25 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
Sep 15 Javascript
ReactJS实现表单的单选多选和反选的示例
Oct 13 Javascript
基于Vue的ajax公共方法(详解)
Jan 20 Javascript
详解关于element级联选择器数据回显问题
Feb 20 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
Sep 27 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 register_shutdown_function函数的深入解析
2013/06/03 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
Python文件操作类操作实例详解
2014/07/11 Python
Python读写docx文件的方法
2018/05/08 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
python3中for循环踩过的坑记录
2020/12/14 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
接口的多继承会带来哪些问题
2015/08/17 面试题
秘书岗位职责
2013/11/18 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL