简单实现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 相关文章推荐
document.all还是document.getElementsByName?
Jul 21 Javascript
javascript数组详解
Oct 22 Javascript
JS实现的网页倒计时数字时钟效果
Mar 02 Javascript
jquery图片切换插件
Mar 16 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
Jun 21 Javascript
Angularjs验证用户输入的字符串是否为日期时间
Jun 01 Javascript
AngularJS 支付倒计时功能实现思路
Jun 05 Javascript
基于vue.js实现分页查询功能
Dec 29 Javascript
基于vue-cli3和element实现登陆页面
Nov 13 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 Javascript
Angular性能优化之第三方组件和懒加载技术
May 10 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 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
javascript实现的listview效果
2007/04/28 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
js读取cookie方法总结
2014/10/31 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
python 实用工具状态机transitions
2020/11/21 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
linux面试题参考答案(5)
2014/09/01 面试题
《商鞅南门立木》教学反思
2014/02/16 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
活动费用申请报告
2015/05/15 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL