简单实现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 相关文章推荐
js 单击式的下拉菜单效果实例
Aug 13 Javascript
JS的事件绑定深入认识
Jun 26 Javascript
JS获取网页图片name属性的方法
Apr 01 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
vue.js+Element实现表格里的增删改查
Jan 18 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 Javascript
详解@angular/cli 改变默认启动端口两种方式
Nov 29 Javascript
Bootstrap Paginator+PageHelper实现分页效果
Dec 29 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
Jan 21 Javascript
小程序登录/注册页面设计的实现代码
May 24 Javascript
你不可不知的Vue.js列表渲染详解
Oct 01 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验证复选框有效性的示例
2013/11/13 PHP
php使用PDO方法详解
2014/12/27 PHP
PHP实现验证码校验功能
2017/11/16 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
Python文件操作类操作实例详解
2014/07/11 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
Python元组常见操作示例
2019/02/19 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
微信公众号token验证失败解决方案
2019/07/22 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
详解python中的异常和文件读写
2021/01/03 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
美国在线印刷公司:PsPrint
2017/10/12 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
创建学习型党组织实施方案
2014/03/29 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
个人整改方案范文
2014/10/25 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
入党心得体会
2019/06/20 职场文书
浅谈Python数学建模之整数规划
2021/06/23 Python